المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [تصميم] مجسم مرحلة جاهزة مع الإضاءة



towfieee
27-05-2007, 12:42 AM
بسم الله الرحمن الرحيم

مرحلة جاهزة لمن يحب التدرب على استيراد المراحل
تصميم Towfieee



المرحلة عبارة عن معسكر محاط بالأسمنت وبداخله برجي مراقبة ودبابتين، وأمام المعسكر بعض الحواجز والتي ممكن أن تستخدم من قبل المهاجم. بالإضافة إلى عدد من الدبابات المهاجمة مقابل المعسكر.

المرحلة قمت بتصميمها باستخدام "3DWorldStudio" والمجسم الوحيد االجاهز اللي استخدمته كان الدبابة. وغيرت لون الدبابة بين المدافع والمهاجم.



في الملف المرفق هناك نمطان للمرحلة :





الأول "X" وهو فقط يحتوي على التصميم والإكساءات بدون الإضاءة، فلا يوجد ظلال في هذا النمط.المميز أنك تستطيع استيراده من أي محرك يقبل هذا النوع من الملفات.
الثاني "DBO" وهو خاص بالدارك بيسك، وهو يحتوي على التصميم والإكساءات بالإضافة إلى الإضاءة والظلال. وهو يوفر عليك الوقت والجهد إذا كنت تستخدم الدارك بيسك.
الصورة الأولى أخذت قبل إضافة الدبابات المهاجمة وهي مأخوذة من داخل الدارك بيسك بعد إضافة السماء.


http://towfieee.com/ST_Files/DL.jpg


أما الصور التالية فكانت من داخل "3DWorldStudio"
http://towfieee.com/ST_Files/screenshot02.jpg

http://towfieee.com/ST_Files/screenshot03.jpg

http://towfieee.com/ST_Files/screenshot04.jpg


ملف المرحلة حوالي "MB 3" (http://towfieee.com/ST_Files/Level.zip)

أتمنى للجميع الفائدة

nash2
27-05-2007, 02:10 AM
مشكور على التصميم الجميل والرائع , موضوع استفد منه .

towfieee
27-05-2007, 03:20 AM
شكرا أخي ، انا مسرور أنك استفدت منه

الأخطبوطي
27-05-2007, 02:46 PM
تسلم ياخ توفي ومشكووور على الموضوع المفيد جداً ماقصرت والله..

سامي.خ
30-05-2007, 12:33 AM
جيت في وقتك توفي
انا عندي مشكلة في التصادم ولا لقيت حل
الله يخليك والله تعبت وانا أحاول

وكمان على ضوء موضوعك هذا
راح أتدرب على إستيراد المراحل وإضائتها

بارك الله فيك وكثر من أمثالك

towfieee
30-05-2007, 08:55 AM
جيت في وقتك توفي
انا عندي مشكلة في التصادم ولا لقيت حل
الله يخليك والله تعبت وانا أحاول

وكمان على ضوء موضوعك هذا
راح أتدرب على إستيراد المراحل وإضائتها

بارك الله فيك وكثر من أمثالك


لقد وضعت كود بسيط ليمكنك من استيراد المرحلة بصيغة "dbo" وهو عبارة عن تصادم المرحلة مع مجسم كرة وقمت بإلصاق الكاميرا مع الكرة ثم إخفاء الكرة:


set display mode 800,600,32 : hide mouse
sync on: sync rate 100 : autocam off: set camera range 1,10000

global camera_c=100
global level=200
rem object
load object "battlefield.dbo",level
set object collision to polygons level
set object light level,0

make object sphere camera_c,20
automatic object collision camera_c,20,0
hide object camera_c
position object camera_c,0,100,0
set global collision on

do


if upkey()=1 then move object camera_c,10
if downkey()=1 then move object camera_c,-10

cay#=cay#+Mousemovex()/2.0
cax#=cax#+Mousemovey()/2.0
If cax#>89.0 Then cax#=89.0
ax#=Curveangle(cax#,ax#,4)
ay#=Curveangle(cay#,ay#,4)
Rotate object camera_c, Wrapvalue(ax#),Wrapvalue(ay#), 0.0

rem position camera
position camera object position x(camera_c),object position y(camera_c),object position z(camera_c)
set camera to object orientation camera_c


sync
loop


أما التالي فسيكون تصادم الكاميرا مع أرضية مكونة من مكعب وجدران مكعبة أيضا ، المميز هو إمكانية التزحلق على هذه المجسمات ، فإذا لاحظت في المثال السابق فكل ما يحصل تصادم يلتصق مجسم المرحلة والكاميرا. أما هنا فقد استخدمنا خاصية المكعبات الافتراضية التي يمنحنا إياها الدارك بيسك.


set display mode 800,600,32 : hide mouse
sync on: sync rate 100 : autocam off: set camera range 1,10000


global level=200
global floor_o=1
global wall_1=2
global wall_2=3
global wall_3=4
global wall_4=5

rem objects
make object box floor_o,1000,1,1000
make object box wall_1,1000,300,1
make object box wall_2,1000,300,1
make object box wall_3,1,300,1000
make object box wall_4,1,300,1000

position object floor_o,-500,0,-500
position object wall_1,-500,150,-1000
position object wall_2,-500,150,0
position object wall_3,-1000,150,-500
position object wall_4,0,150,-500

make object collision box floor_o,-500,0,-500,500,1,500,0
make object collision box wall_1,-500,-150,0,500,150,1,0
make object collision box wall_2,-500,-150,0,500,150,1,0
make object collision box wall_3,0,-150,-500,1,150,500,0
make object collision box wall_4,0,-150,-500,1,150,500,0

position camera -200,100,-200
automatic camera collision camera,40,0

set global collision on

do


control camera using arrowkeys camera,4,1

cay#=cay#+Mousemovex()/2.0
cax#=cax#+Mousemovey()/2.0
If cax#>89.0 Then cax#=89.0
ax#=Curveangle(cax#,ax#,4)
ay#=Curveangle(cay#,ay#,4)
Rotate camera camera, Wrapvalue(ax#),Wrapvalue(ay#), 0.0




sync
loop

التصادم بشكل عام في الدارك بيسك بطيء إذا أصريت استخدام على استخدام اللغة ذاتها ، أما إذا أردت أن تستخدم برامج مساعدة فهنالك الكثير من الملفات المساعدة على الانترنت والتي يمكنك استخدامها ، يعني أنا استخدم "NuclearGlory" وسنيك يستخدم اخرى نسيت اسمها. ولكن ربما تكون راضي بما يقدمه الدارك بيسك. وهو في النهاية قرارك.

في الملف المرفق أرفقت الكود الأخير مع إضافة بعض المؤثرات كالجاذبية وبعض الإكساءات.

وعمليا فكرة التصادم كالتالي
نصنع جسم أول ونختار طريقة تصادمه "box , Sphere , polygon" إلخ
ونصنع جسم ثاني ونحتار أيضا طريقة تصادمه
ونفعل التصادم من خلال "set global collision on"
وفي النهاية لا ننسى "sync" قبل نهاية اللووب "do..sync..loop"

أتمنى أن أكون قد أفدتك

سامي.خ
30-05-2007, 02:18 PM
نسيت أقولك
انا وضعت مودل للمرحلة ومودل لللاعب
أكثر الأمثلة إلي لقيتها هي عن التصادم مع الكاميرا
لكن التصادم بين أوبجكتين ما لقيت
هذا هو الكود



rem ÈÓã Çááå ÇáÑÍãä ÇáÑÍíã
rem Çááåã áÇ Óåá ÅáÇ ãÇ ÌÚáÊå ÓåáÇð ¡æÃäÊ Çááå Åä ÔÆÊ ÌÚáÊ ÇáÍÒä ÓåáÇð

rem ÅÚÏÇÏÇÊ ÃÓÇÓíÉ
Set Display Mode 800,600,16
Autocam Off
Sync On: CLS 0
Sync Rate 60
Hide mouse
load sound "beep1.wav",1

rem ÊÍãíá ÇáßÇÆäÇÊ
rem ÇáÑÌá
load object "ene.x",1
Position Object 1,0,10,0
rem set object collision on 1
rem ÇáÚÇáã

load object "map.x",2
Position Object 2,0,10,0

set object collision on 2

for q = 3 to 30
make object cube q,10
Position Object q,rnd(200),20,rnd(200)
set object collision on q
next q



set object speed 1,30

Do
speed=2
Rem ÅÎÊÈÇÑ ÇáÊÕÇÏã
for ang = 1 to 360
cx# = newxvalue(XPos#,ang,5) rem x ãä åäÇ ÓäÍÕá Úáì ãæÞÚ ÇáäÞØÉ ÍÓÈ ÇáÇÍÏÇËí
cz# = newzvalue(ZPos#,ang,5) rem y ãä åäÇ ÓäÍÕá Úáì ãæÞÚ ÇáäÞØÉ ÍÓÈ ÇáÇÍÏÇËí
next ang
col# = intersect object(2,XPos#,YPos#,ZPos#,cx#,YPos#,cz#)

if object frame(1)=1 then end

If upkey()=1 and col#=0
Move Object 1,speed : loop object 1,10,30 :set object speed 1,30
else
loop object 1,0,10
set object speed 1,10
endif
If Downkey()=1 and col#=0 Then Move Object 1,-speed
if col#=1 then speed=0

Yrotate Object 1, (wrapvalue(Object Angle Y(1) + mousemovex()/4))

rem ÊÓÌíá ÇáÞíã ÇáÌÏíÏÉ áãæÞÚ ÇáÑÌá
XPos#=Object Position X(1)
YPos#=Object Position Y(1)
ZPos#=Object Position Z(1)
rem ÊØÈíÞ ÞÓã ÇáãæÞÚ Úáì ÇáÑÌá
Position Object 1,XPos#,YPos#,ZPos#

rem ÇáÊÍßã ÈÇáßÇãíÑÇ
Angle#=Object Angle y(1)
CamDist#=60.0 : rem ÈÚÏ ÇáßÇãíÑÇ Úä ÇáÑÌá
CamHeight#=YPos#+30.0 : rem ÅÑÊÝÇÚ ÇáßÇãíÑÇ Úä ÇáÑÌá
Camsmooth#=5 : rem ÅÓÊÌÇÈÉ ÇáßÇãíÑÇ áÍÑßÉ ÇááÇÚÈ
Set Camera To Follow XPos#,YPos#,ZPos#,Angle#,CamDist#,CamHeight#,CamSmooth#,0 : rem ÌÚá ÇáßÇãíÑÇ ÊÊÈÚ ÇáÑÌá

for q = 3 to 30
if object collision(q,1)=1
if not sound playing(1) then play sound 1
hide object q

endif
next q

Sync
Loop

rem æÕáì Çááå Úáì ÓíÏäÇ ãÍãÏ æÚáì Âáå æÕÍÈå ÃÌãÚíä

towfieee
30-05-2007, 06:23 PM
الكود الأول اللي أدرجته كان بين مجسم اسمه
"camera_c"
وليس الكاميرا ذاتها


ثم بعد ذلك وضعت الكاميرا في نفس إحداثيات المجسم لتتحرك كما يتحرك المجسم

فهي خدعة ولكن في الحقيقة هي تصادم بين مجسم المرحلة ومجسم الكرة اللي اسمها
"camera_c"


هذا هو المثال مرة أخرى


set display mode 800,600,32 : hide mouse
sync on: sync rate 100 : autocam off: set camera range 1,10000

global camera_c=100
global level=200
rem object
load object "battlefield.dbo",level
set object collision to polygons level
set object light level,0

make object sphere camera_c,20
automatic object collision camera_c,20,0
hide object camera_c
position object camera_c,0,100,0
set global collision on

do


if upkey()=1 then move object camera_c,10
if downkey()=1 then move object camera_c,-10

cay#=cay#+Mousemovex()/2.0
cax#=cax#+Mousemovey()/2.0
If cax#>89.0 Then cax#=89.0
ax#=Curveangle(cax#,ax#,4)
ay#=Curveangle(cay#,ay#,4)
Rotate object camera_c, Wrapvalue(ax#),Wrapvalue(ay#), 0.0

rem position camera
position camera object position x(camera_c),object position y(camera_c),object position z(camera_c)
set camera to object orientation camera_c


sync
loop

اللون الأحمر يدل على المجسمان وعلى خصائص تصادمهما
اللون الأزرق لتفعيل التصادم
اللون البرتقالي لوضع الكاميرا في نفس احداثيات المجسم

سامي.خ
31-05-2007, 01:01 AM
طريقتك نجحت نوعاً ما
لكن حسب لي تصادم جميع المجسمات
حطيت مجسم للبطل وحاولت أن أجعله بنفس إحداثيات الكرة لكن الكرة تعلق وتتوقف
لماذا؟

towfieee
31-05-2007, 07:24 AM
تذكر أن تستخدم الأمر
set collision object off
وأضف رقم مجسم اللاعب في النهاية وبالتالي فلن يتصادم اللاعب مع أي شي أخر.

ثم ضعه في موقع الكرة وأخفي الكرة

towfieee
31-05-2007, 07:33 AM
الكود الجديد سيكون كالتالي


set display mode 800,600,32 : hide mouse
sync on: sync rate 100 : autocam off: set camera range 1,10000
global mask=3

rem object
load object "map.X",1
load object "ene.X",2
position object 2,30,25,50
set object collision to polygons 1
set object light 1,1

make object sphere mask,1
automatic object collision mask,5,0
rem hide object mask
position object mask,0,20,0
set object collision off 2
set global collision on

do
XPos#=Object Position X(mask)
YPos#=Object Position Y(mask)
ZPos#=Object Position Z(mask)


if upkey()=1 then move object mask,3
if downkey()=1 then move object mask,-3

cay#=cay#+Mousemovex()/2.0
ay#=Curveangle(cay#,ay#,4)
Rotate object mask, 0,Wrapvalue(ay#), 0

rem position object 2,XPos#,YPos#,ZPos#
rem ÇáÊÍßã ÈÇáßÇãíÑÇ
Angle#=Object Angle y(mask)
CamDist#=60.0 : rem ÈÚÏ ÇáßÇãíÑÇ Úä ÇáÑÌá
CamHeight#=YPos#+10.0 : rem ÅÑÊÝÇÚ ÇáßÇãíÑÇ Úä ÇáÑÌá
Camsmooth#=5 : rem ÅÓÊÌÇÈÉ ÇáßÇãíÑÇ áÍÑßÉ ÇááÇÚÈ
Set Camera To Follow XPos#,YPos#,ZPos#,Angle#,CamDist#,CamHeight#,CamSmooth#,0 : rem ÌÚá ÇáßÇãíÑÇ ÊÊÈÚ ÇáÑÌá
position object 2,XPos#,YPos#,zPos#
set object to object orientation 2,mask

Sync
Loop

rem æÕáì Çááå Úáì ÓíÏäÇ ãÍãÏ æÚáì Âáå æÕÍÈå ÃÌãÚíä

حظ موفق

سامي.خ
31-05-2007, 03:48 PM
شكراً لك توفي
وكثر الله من أمثالك

towfieee
31-05-2007, 07:44 PM
من عيوني أخي ، وموفق ان شاء الله

ayoubsoft
13-06-2007, 03:47 PM
يا اخوان انا لا اعرف شيء في الدارك باسيك
----------
و لكن كيف افتح المثال و اشوف دلك التصميم في الدارك باسيك ؟

The_source
18-07-2008, 05:17 PM
يعني أنا استخدم "NuclearGlory"

ممكن رابط المقبس إن لم يكن هناك إحراج وفكره موجزه عنه

سامي.خ
18-07-2008, 09:33 PM
يا ترس يمنع الرد على المواضيع القديمة
شكلك بتصير نوب


مغلق