2017-05-29 3 views
0

私が最初に得たPlayerは機能に組み込まれて団結することなく、目標に向かって動いていない

Vector3 displacment = target.transform.position - player.transform.position; 
//you can also get magnitude directly through displacement.magnitude 
float xMagnitude = displacment.x * displacment.x; 
float yMagnitude = displacment.y * displacment.y; 
float zMagnitude = displacment.z * displacment.z; 

float customMagnitude =Mathf.Sqrt(xMagnitude + yMagnitude + zMagnitude); 
directionToMove = new Vector3(displacment.x/customMagnitude, displacment.y/customMagnitude, displacment.z/customMagnitude); 
//directionToMove = displacment.normalized; 
Vector3 velocity = directionToMove * speed; 
Vector3 moveAmount = velocity * Time.deltaTime; 
target.transform.position += moveAmount; 

(MoveTowardsのような団結の組み込み関数なし)私のプレイヤー使用して、カスタム・コードの方に私のターゲットオブジェクトを移動しようとしています2つのベクトルの間の変位は、その方向を得て、それを速度で私の位置に渡します。その方向はプレイヤーの方向ではありません。私は間違って何をしていますか?あなたはに向けてプレーヤーをターゲットを移動したい場合は

+0

あなたはユニティ組み込み関数を使用していない理由は、任意の理由は? – Hellium

+0

ベクトル計算を学びたいから –

答えて

0

をので、私は、これはストレート取得してみましょう:あなたはプレイヤーではなく、目標に向けたプレイヤーに向けてターゲットを移動したいです。これは正しいです?

ターゲットオブジェクトをプレーヤーに向かって移動する場合は、その位置ずれはplayer.transform.position - target.transform.positionにする必要があります。

あなたが本当にユニティ機能を使用したくない場合は、ここで私はあなたのコードを行うだろう方法は次のとおりです。

Vector3 displacment = player.transform.position - target.transform.position; 
float xMagnitude = displacment.x * displacment.x; 
float yMagnitude = displacment.y * displacment.y; 
float zMagnitude = displacment.z * displacment.z; 

float customMagnitude =Mathf.Sqrt(xMagnitude + yMagnitude + zMagnitude); 

//multiplying vector by scalar works the same, 
//and is more readable (possibly faster too) 
directionToMove = displacement * 1f/customMagnitude; 

Vector3 velocity = directionToMove * speed; 
Vector3 moveAmount = velocity * Time.deltaTime; 
target.transform.position += moveAmount; 
+0

答えをありがとう –

1

displacmentでなければならない:(X1、Y1、Z1)と終点B:

displacment = player.transform.position - target.transform.position; 

は、初期点を与えられたベクトルを生成するには(X2、Y2、Z2)の計算は以下の通りです:

v = B - A = (x2 - x1, y2 - y1, z2 - z1); 
+0

一般的な数式をありがとう。愚かな私 –

関連する問題