こんにちは、只今ゲーム制作をしております。
そこで詰まってしまったので、質問させていただきます。
今やっているのがNavMeshでAIを動かして、座標で計算してやっています。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class AiTire : MonoBehaviour 6{ 7 [SerializeField] private float roll = 200; // 回転スピート 8 // private float beforePos; // 前のポジションを格納 9 private Vector3 beforePos; 10 11 void Update() 12 { 13 WheelRotate(); 14 } 15 /// <summary> 16 /// AIタイヤを回転 17 /// </summary> 18 private void WheelRotate() 19 { 20 // var rotate = transform.position.z - beforePos; 21 // transform.Rotate(rotate * roll, 0, 0); 22 // beforePos = transform.position.z; 23 24 var rot = transform.InverseTransformPoint(transform.position - beforePos); 25 transform.Rotate(rot.z,0,0); 26 beforePos = transform.position; 27 } 28}
このやり方でやっているのですが、こっちでやっていしまうと、回転する向きが後ろに行ったり前に行ったりしてタイヤが回転しているようには見えないです。
C#
1 // var rotate = transform.position.z - beforePos; 2 // transform.Rotate(rotate * roll, 0, 0); 3 // beforePos = transform.position.z; 4
こっちは動いていないのにずっと回転してしまいます。
C#
1 var rot = transform.InverseTransformPoint(transform.position - beforePos); 2 transform.Rotate(rot.z,0,0); 3 beforePos = transform.position;
Wheel Colider は無しでお願いします。回答お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/06 03:10
2021/02/06 05:49 編集
2021/02/06 06:09