موضوع: Physic Sytem

ردود: 3 | زيارات: 821
  1. #1

    Lightbulb 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);

    }

    }



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

    واسف ان كنت قد اطلت عليكم


  2. #2
    عضو
    صور رمزية mojazef
    تاريخ التسجيل
    Jun 2003
    المنطقة
    السعودية
    ردود
    71
    شكرا أخي على هذا الشرح الوافي

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

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل