2016-08-16 3 views
-1

私はUnityで2Dゲームをしています。私はいくつかのゲームオブジェクトを持っています。transform.rightを反転させた後、GameObjectが間違った方向に移動する

開始時に、transform.forwardベクトルをプレーヤの方向に反転させます。

Vector3 target = new Vector3(player.transform.position.x, transform.position.y, transform.position.z); 
transform.right = (target - transform.position).normalized; 

エディタでは、transform.rightベクトル(赤い矢印)が正しい方向を指していることがわかります。しかし、私がゲームオブジェクトを動かすと、ゲームオブジェクトがプレイヤーから正しい場合、それは間違った方向に動きます。

rBody.AddForce(Vector2.right * movementSpeed); 

なぜわからないのですか?誰にも何か提案はありますか?ありがとうございました。

答えて

0

AddForce()は、あなたのキャラクターに関して常にグローバルスペースを使用しています。あなたはあなたの力を追加するためにローカルスペースを使用したいので、AddRelativeForce()を使用してください。

試してみてください。

rBody.AddRelativeForce(Vector2.right * movementSpeed); 

https://docs.unity3d.com/ScriptReference/Rigidbody.AddRelativeForce.html

+0

私の問題を解決し、私は前にAddRelativeForceをしようと試みたが、それは同じ問題でした。しかし、私は私の問題を解決することができます rBody.AddForce(transform.right * movementSpeed); – Verdemis

0

transform.rightにVector2.rightを変更するには

rBody.AddForce(transform.right * movementSpeed); 
関連する問題