برنامج لتحريك جسم داخل لعبة في إتجاهين بواسطة #C

نقدم لكم برنامج بسيط لتحريك جسم اللاعب في إتجاهين شمال ويمين دون الخروج من الشاشة.




يتم تعريف متغير من النوع " float" بأسم "moveInput".
يتم إعطاء قيمة للمتغير "moveInput" وهي " Input.GetAxis("Horizontal") * Time.deltaTime * 3;".
وهي تعني أن:
  • "Input" دالة في برنامج اليونتي مخصصة للتعرف على ما يقوم به اللاعب من عمليات ضغط علي أزرار الكيبورد، أو إستخدامه للماوس، أو اللمس الشاشة في الجوال، وغيرها.
  • "GetAxis("Horizontal")"وهي تحصيص تتبع ما قام به اللاعب من عمليات علي المحور اليمين والشمال فقط، وإحضار تلك القيمة، وهي تكون ما بين (-1، 1).
  • "* Time.deltaTime"هي دالة خاصة بالزمن داخل محرك الألعاب، وهي هنا وظيفتها أن تقوم بجعل سرعة الحركة تتم عن طريق الزمن، ولا تتم حسب سرعة رامات الجهاز، حتي تعمل اللعبة بنفس الشكل والسرعة علي جميع الأجهزة.
  • " * 3"وهي السرعة التي ترغب في أن يتحرك بها اللاعب داخل لعبتك وبمكنك تغيرها كما يحلوا لك.

وبعد ألتقاط ما قام اللاعب به من إدخال وتفاعل مع اللعبة يتم تحريك الشخصية أم الجسم بالكود التالي:
" transform.position += new Vector3(moveInput, 0, 0);"
وهو يعني:
  • "transform.position"الدالة المسئولة عن تحديد مكان كل جسم داخل اللعبة، ولها ثلاث قيم، "x،y،z"والأكس هنا يحدد مكان الجسم علي المحور الأفقي، ةالواي يحدد أرتفاع الجسم، والزيد يحدد مدى العمق أي أبتعاد أو إقتراب الجسم من الشاشة.
  • "=+"وهي تعني القيمة تساوي مجموع آخر قيمة لها+ القيمة التالية.
  •  "new Vector3(moveInput, 0, 0)" وال "Vector3" متغير يستخدم لحفظ مكان الأجسام داخل اللعبة ويكون له الثلاث قيم وهي التي ذكرنها من قبل "x،y،z"، أما ال "new"فهي تعني إنشاء "Vector3" جديد وتخصيص القيم التاليه له، وقد تم تحديد القيمة الأولى الخاصة بالأكس له عن طريق المتغير"moveInput"بينما تركنا باقي القيم = صفر حتي يتحرك الجسم داخل اللعبه علي المحور أكس فقط..
 أما في الجزء التالي فأننا أستخدمنا "if" لنقول لمحرك اللعبة لو أن مكان الجسم أكبر من القيمة كذا أو يساويهاأو أصغر من القيمة كذا أو يساويها فنفذ الأوامر البرمجية التي بين الأقواس التالية { }.
 قمنا داخا أقواس بتعريف متغير من النوع فلات هو" float xPos" وأعطيناه قيمة عن طريق الدالة "Mathf.Clamp"وهي دالة رياضية داخل اليونتي وظيفتها إعطاء قيمه للمتغير بحد أقسى وحد أدنى، وهي تأخذ ثلاث قيم:
  • الأول وهي القيمة التي نريد حصرها في حدود وهي هنا "transform.position.x".
  • الثانى وهي قيمة الحد الأصغر الذي لا نرغب في نزول القيمة أقل منه وهي هنا تكون أقصي يمين الشاشة.
  • الثالث وهي القيمة الحد الأكبر والتي لا نرغب في زيادة القيمة عنها وهي هنا أقصى شمال الشاشه.
  • ثم نعطي لل "transform.position"القيم الجديدة ليتحرك الجسم خلالها.


using UnityEngine;
using System.Collections;

public class PlayerScript : MonoBehaviour {



    void Update () {

        float moveInput = Input.GetAxis("Horizontal") * Time.deltaTime * 3;
        transform.position += new Vector3(moveInput, 0, 0);

 
        if (transform.position.x <= -2.5f || transform.position.x >= 2.5f)
        {
            float xPos = Mathf.Clamp(transform.position.x, -2.5f, 2.5f); //Clamp between min -2.5 and max 2.5
            transform.position = new Vector3(xPos, transform.position.y, transform.position.z);
        }
    }


}

إرسال تعليق

0 تعليقات