2016-12-13 94 views
1

私はUnityドキュメンテーションを含めてどこでも見てきましたが、UnityのVector2.Reflect()関数の使い方の良い例は見つかりませんでした。私は壁に当たったときにボールの方向を制御するためにこれを使用しようとしています(2Dブレークアウトゲームで)。 2つの引数(inDirection、inNormal)が必要ですが、どのように使用するのか分かりません。どんな助けもありがとう。Unity - Vector2.Reflect()の使い方

+0

パラメータは一方がボールの方向である、と言うようにもう一つは壁の法線です。 –

+0

なぜ2D質問で[tag:unity3d]にタグを付けるのですか? – devRicher

+1

Unity3Dは、2Dゲームを作成するために使用しているアプリケーションの名前です。 – Kaz

答えて

3

inDirectionはボールの速度で、inNormalは壁に垂直な単位ベクトルでなければなりません。

は、あなたのボールオブジェクトでこれを入れてみてください:

void OnCollisionEnter(Collision collision) 
{ 
    Vector2D inDirection = GetComponent<RigidBody2D>().velocity; 
    Vector2D inNormal = collision.contacts[0].normal; 
    Vector2D newVelocity = Vector2D.Reflect(inDirection, inNormal); 
} 

注:それはものの名前の面で微調整する必要があるかもしれないので、私は現在、そのコードをテストすることはできません。

5

enter image description here

Vector2 Reflect(Vector2 inDirection, Vector2 inNormal)

inDirection:黒矢印

inNormal:赤い矢印

return output:緑色の矢印

関連する問題