السلام عليكم ورخمة الله...
اليوم انشاء الله (بعد غيبة TS) ساطرح موضوع جديد وجميل لربما (او بالاحرى اكيد) سيهم مصممي الالعاب لاضفاء الواقعية عى الاجسام ومواضيع سقوط الاجسام والارتطام
ساتحدث عن موضوع ال Physic system وهو موضوع هام
يبدأ التعريف عن الجسم بانه كائن من نوع physic كما يلي:
حيث تضع عوضا عن entity اسم الكائن مثلا my
وفي type تضع اما Ph_rigid لتعريف الكائن انه physic او 0 لالغاءه من هذا النظام
وفي hull لتحديد الكائن الوهمي للاصطدام وقيمه
وكل خيار واضح على ما يدل...
الان لتحديد كتلة الجسم عن طريق
حيث تضع عوضا عن entity اسم الكائن مثلا my (كما في السابق)
وفي mass نحدد كتلة الجسم واذا وضعنا 0 يصبح الكائن ثابت أي لاتاثر بالاجسام الاخرى
وفي hull لتحديد سلوكه وله القيم التالية:
الان لتحديد الاحتكاك:
خيث تضع داخل friction قيمة الاحتكاك بين 0,100 وقيمة 0 تعدم الاحتكاك
الان :
bounciness حيث تقوم بتحيد ارتطام الجسم أي عند سقوطه كيفية الارتطام (مثل الكرة المطاطية) عند القيمة 100 او جعلها مثل سقوط كرة طين عند القيمة 0
minimumspeed حيث تتحكم بسرعة الاصطدام
تحديد التضاءل عند الهبوط والسقوط :
linear لتحيد الضائل الخطي ومجاله 0,100
angular لتحيد الضائل الزاوي ومجاله 0,100
جاء وقت تحديد الجاذبية (الاجمل):
Gravity تقوم بتحديد الجاذبية عن طريق موجه Vector تحدد قيمة X,Y,Z
وهكذا الان قمت بشرح ا لتعليمات الاساسية وليس جميعها وتستطيع عن طريق هذا النظام انشاء اشياء لم تتوقع انشاءها مثل تساقط حجارة من على جبل!!
مثل قمت بانشاء سيارة تستطيع القفز من على تل وكانت بشكل واقعي وهاهو الكود:
function physic_set()
{
phent_settype(my,ph_rigid,ph_box);
phent_setmass(my,2,ph_box);
phent_setfriction(my,50);
phent_setelasticity(my,50,10);
}
Action my_car
{
physic_set();
while(1)
{
camera.x=my.x+200*cos(my.pan);
camera.y=my.y+200*sin(my.pan);
camera.z=my.z+40;
car_speed.x=70*(key_w-key_s)*time;
if(car_speed.x!=0)
{
my.pan+=10*(key_a-key_d)*time;
}
ph_setgravity(vector(car_speed.x,0,-386*3));
move_mode=ignore_passable+glide;
ent_move(car_speed,nullvector);
ph_setgravity(vector(car_speed.x,car_speed.y,-386*3));
wait(1);
}
}
كما لاحظتم الكود بسيط ولكنه فعال
واسف ان كنت قد اطلت عليكم
اليوم انشاء الله (بعد غيبة TS) ساطرح موضوع جديد وجميل لربما (او بالاحرى اكيد) سيهم مصممي الالعاب لاضفاء الواقعية عى الاجسام ومواضيع سقوط الاجسام والارتطام
ساتحدث عن موضوع ال Physic system وهو موضوع هام
يبدأ التعريف عن الجسم بانه كائن من نوع physic كما يلي:
Phent_settype(entity,type,hull);
حيث تضع عوضا عن entity اسم الكائن مثلا my
وفي type تضع اما Ph_rigid لتعريف الكائن انه physic او 0 لالغاءه من هذا النظام
وفي hull لتحديد الكائن الوهمي للاصطدام وقيمه
PH_BOX, PH_SPHERE, PH_CYLINDER , PH_POLY
وكل خيار واضح على ما يدل...
الان لتحديد كتلة الجسم عن طريق
phent_setmass ( entity, mass, hulltype );
حيث تضع عوضا عن entity اسم الكائن مثلا my (كما في السابق)
وفي mass نحدد كتلة الجسم واذا وضعنا 0 يصبح الكائن ثابت أي لاتاثر بالاجسام الاخرى
وفي hull لتحديد سلوكه وله القيم التالية:
PH_BOX, PH_SPHERE, PH_POLY
الان لتحديد الاحتكاك:
phent_sefriction ( entity, friction );
خيث تضع داخل friction قيمة الاحتكاك بين 0,100 وقيمة 0 تعدم الاحتكاك
الان :
phent_setelasticity ( entity, bounciness, minimumspeed );
bounciness حيث تقوم بتحيد ارتطام الجسم أي عند سقوطه كيفية الارتطام (مثل الكرة المطاطية) عند القيمة 100 او جعلها مثل سقوط كرة طين عند القيمة 0
minimumspeed حيث تتحكم بسرعة الاصطدام
تحديد التضاءل عند الهبوط والسقوط :
phent_setdamping ( entity, linear, angular );
linear لتحيد الضائل الخطي ومجاله 0,100
angular لتحيد الضائل الزاوي ومجاله 0,100
جاء وقت تحديد الجاذبية (الاجمل):
ph_setgravity (gravity );
Gravity تقوم بتحديد الجاذبية عن طريق موجه Vector تحدد قيمة X,Y,Z
وهكذا الان قمت بشرح ا لتعليمات الاساسية وليس جميعها وتستطيع عن طريق هذا النظام انشاء اشياء لم تتوقع انشاءها مثل تساقط حجارة من على جبل!!
مثل قمت بانشاء سيارة تستطيع القفز من على تل وكانت بشكل واقعي وهاهو الكود:
Var car_speed;
function physic_set()
{
phent_settype(my,ph_rigid,ph_box);
phent_setmass(my,2,ph_box);
phent_setfriction(my,50);
phent_setelasticity(my,50,10);
}
Action my_car
{
physic_set();
while(1)
{
camera.x=my.x+200*cos(my.pan);
camera.y=my.y+200*sin(my.pan);
camera.z=my.z+40;
car_speed.x=70*(key_w-key_s)*time;
if(car_speed.x!=0)
{
my.pan+=10*(key_a-key_d)*time;
}
ph_setgravity(vector(car_speed.x,0,-386*3));
move_mode=ignore_passable+glide;
ent_move(car_speed,nullvector);
ph_setgravity(vector(car_speed.x,car_speed.y,-386*3));
wait(1);
}
}
كما لاحظتم الكود بسيط ولكنه فعال
واسف ان كنت قد اطلت عليكم
تعليق