سؤال

لقد كنت أتعلم الوحدة ثلاثية الأبعاد ، ببطء. أحاول صنع متاهة ، وأحتاج إلى حدث لحدوثه عند وصولهم إلى منطقة النهاية.

كيف يمكنني جلب موقع الكائن والتحقق مما إذا كان في المنطقة المستهدفة؟ باستخدام JavaScript.

شكرا على اي مساعدة!

هل كانت مفيدة؟

المحلول

إذا كان من الممكن التعامل مع منطقتك كمربع ، فيمكنك إضافة boxcollider إلى مشهدك حول منطقة النهاية وتعيينها isTrigger خاصية إلى صواب. ثم ستحصل على رد اتصال OnTriggerEnter على كيانك عندما يدخل المنطقة ، والتي يمكنك استخدامها لاحقًا لإنهاء المستوى أو أي شيء آخر.

نصائح أخرى

كما بيتر جي دول على إجابات الوحدة:

إذا كان لديك جهاز Rigidbody ، فيمكنك عمل RigidBody.issleeping () للتحقق مما إذا كان Rigidbody نائمًا

إذا كنت تستخدم وحدة تحكم أحرف ، فعليك التحقق لمعرفة ما إذا كان الحرف controller.velocity == Vector3.zero ؛

أو يمكنك حفظ ناقل 3 يدويًا كل إطار يتذكر الموضع الأخير. شيء مثل:

function Update () {
 curPos = position;
 if(curPos == lastPos) {
     print("Not moving");
 }
 lastPos = curPos;
}

حسنًا ، إذا كنت تقصد منطقة النهاية ، يمكنك القيام بذلك بعدة طرق

يمكنك استخدام تصادمات

بطريقة بسيطة: (1) قم بإنشاء طائرة ، قم بإنشاء علامة تسمى "Finish" (2) ، ثم حدد المشغل ثم انقر فوق العلامة "المنسدلة" في المفتش. ابحث عن "الانتهاء" وحدده. ستحتاج أيضًا إلى إضافة مصادم إلى GameObject.

ثم قم بإنشاء JavaScript جديد وأضف هذا الرمز إليه

    function OnCollisionEnter(collision : Collision){
    if(collision.gameObject.tag == "finish"){ 

//"STOP GAMEOBJECT FROM MOVING"
}

}

أو استخدم هذه الطريقة

ضع هذا البرنامج النصي على اللاعب الخاص بك. ربما يكون هذا البرنامج النصي مثل الله مثل استخدام المصاعدين لما تفعله

 var other : Transform;
    function Update ()
    {

    var dist = Vector3.Distance(other.position, transform.position);

    if (dist < 100)
    {
    //stop player movent here 
// move player to exact finish position over time 

    }

    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top