سؤال

أحاول استخدام Physics.Raycast الطريقة، ولكن أحصل على أخطاء قائلا:

أفضل تطابق طريقة مثالية لتحميل "UnityEngine.pysics.raycast (UnityEngine.Vector3، UnityEngine.Vector3، Float، Int)" لها بعض الوسائط غير الصالحة.

من الغريب أن كل من itellisense والوثائق قل لي أن هذا مسموح به:

RaycastHit hit = new RaycastHit();
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, hit)) {
    print(hit.point.ToString());
    selection.transform.Translate(hit.point - selection.transform.position);
}

اي فكرة؟

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

المحلول

أعتقد أنك بحاجة إلى الكلمة الرئيسية قبل "ضرب" في الفيزياء.

RaycastHit hit = new RaycastHit();
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit)) {
    print(hit.point.ToString());
    selection.transform.Translate(hit.point - selection.transform.position);
}

نصائح أخرى

في C #، يجب أن نستخدم معلمة مقدمة الخروج قبل النتيجة المتغيرة من أجل الحصول على الوظيفة لتعيين البيانات إليها.

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