Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

Physic Sytem

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • Physic Sytem

    السلام عليكم ورخمة الله...



    اليوم انشاء الله (بعد غيبة 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);

    }

    }



    كما لاحظتم الكود بسيط ولكنه فعال

    واسف ان كنت قد اطلت عليكم
    if (my.brothers==1){my._happy=on;}

  • #2
    شكرا أخي على هذا الشرح الوافي
    http://mojazef.incohost.com/3.jpg

    تعليق


    • #3
      أخي Techsoft جزاك الله كل خير .... أتمنى لو كان التفصيل فيه بعض الرسوميات التي تشرح ميكانيكية عمل الارتطام ، وطريقة عمل المتغيرات قبل وبعد الارتطام .... ولك خالص التقدير على هذا المجهود.
      Live Free ... Die Well
      The Scorpion King

      تعليق

      يعمل...
      X