نقل قول:
والا از transform.Rotate خودم برای چرخش ماشین استفاده کردم (steer angle مشکل اساسی داره!!! ).می تونه بعد چرخش rigidbody.rotation=transform.rotation کنی.
ممنون از توجهت.بزار بهتر توضیح بدم. ببین الان فرض کن یه Sphere داریم که ریگید بادی نداره.
خب حالا من میخوام توسط دکمه ی UpArrow به طرف جلو حرکت کنه.
توسط دکمه ی LeftArrow به سمت چپ Rotate پیدا کنه و همچنین توسط دکمه ی RightArrow به سمت راست Rotate پیدا کنه.
(بنابراین این چرخش که با این دکمه ها هست باعث تغییر جهت مسیر توپ میشه و توی اون جهت میشه با دکمه ی UpArrow رفت جلو)
و برای این کار کد زیر رو مینویسیم که خوب کار میکنه :
کد:
If(Input.GetKey(KeyCode.UpArrow)) gameObject.transform.Translate(Vector3.forward*speed);
If(Input.GetKey(KeyCode.LeftArrow)) gameObject.transform.Rotate(Vector3.left*speed);
If(Input.GetKey(KeyCode.RightArrow)) gameObject.transform.Rotate(Vector3.right*speed);
خب این از این ...
حالا به این Sphere یه RigidBody میدیم.
خب واسه حرکت دادن جسمی که ریگید بادی داره از AddForce استفاده میکنیم.
بنابراین خط اول کد بالا اینجوری تغییر میکنه :
کد:
If(Input.GetKey(KeyCode.UpArrow)) gameObject.rigidbody.AddForce(Vector3.forward*speed);
و مشکل اینجاس ... حالا که داره addForce میشه دیگه Rotate کردن کلاس tranform روش جواب نمیده و باعث تغییر جهت نمیشه ... چون الان حرکت Sphere طبق قوانین فیزیکه.
و اگه برای چرخش از addTorque استفاده کنیم توپ رو فقط بهش نیروی چرخیدن وارد میکنه که توی تغییر مسیرش هیچ نقشی نداره.
بنابراین من نمیدونم باید چیکار کنم تا این مشکل برطرف بشه. :sq_3: