私はシンプルなウェイポイントシステムを持っています。ウェイポイント値を保持するバケットとして機能する配列の変換を使用します。Unity3Dウェイポイントでの位置と回転の一致
私はこのウェイポイントシステムを使用して、あるポイントに向かって移動することでシーン全体にカメラを移動します。シーンは大きくないので、すべてがお互いに近いです。
カメラはボタンをクリック/押してある位置から別の位置に移動します。これは正常に動作します。
void Start()
{
//Sets the Camera to the first point
Camera = GameObject.Find("Main Camera");
Camera.transform.position = patrolPoints[0].position
currentPoint = 0;
}
//Fixed Update seems to work better for LookAt
void FixedUpdate()
{
//Looks at initial Target
Camera.transform.LookAt(TargetPoints[0]);
if (click == true)
{
Camera.transform.position = Vector3.MoveTowards(Camera.transform.position, patrolPoints[currentPoint].position, moveSpeed * Time.deltaTime);
//Camera.transform.rotation = Quaternion.Slerp(Camera.transform.rotation, patrolPoints[currentPoint].transform.rotation, Time.deltaTime);
Camera.transform.LookAt(TargetPoints[currentPoint]);
}
}
public void onNextClick()
{
if (currentPoint >= patrolPoints.Length)
{
currentPoint = 0;
}
if (Camera.transform.position == patrolPoints[currentPoint].position)
{
currentPoint++;
click = true;
}
}
私はまだについて話していないことを、変換の一の態様に困難を抱えています。それが回転です。
私はlookAtを使用して、最初のルックのターゲットを設定しました。これは動作します。しかし、それが配列のlook内の次のターゲットに実行されるとき、変更は突然です。
私もショットでSlerpを試しました。これは、ウェイポイントが適切なローテーション値に設定されているときに機能し、値は1つの位置から次の位置にスローされます。しかし、タイミングはあまり整理されていません。いくつかのポジションの移行が速く進みます。つまり、ローテーションが追いつこうとしている/他の人が遅れていることを意味します。
私は、現在のウェイポイントと次のウェイポイントの距離を取得し、カメラの現在の位置に対する更新の全体的なパーセンテージとして扱うことを試みました。ポジションの更新を前提としています。
しかし、私は多少それを失っています。多くの例はiTweenを見ることを示唆しています - そして、私はこれがうまくいくとは思わないでしょう - しかし、私は数学に少し入りたいです。
誰でも正しい方向に私を置くことができますか?