2016-12-13 7 views
1

Я искал всюду, включая документацию Unity, но не могу найти хороших примеров того, как использовать функцию Vector2.Reflect() Unity. Я пытаюсь использовать это для управления направлением мяча (в 2D Breakout), когда он попадает в стену. Он принимает 2 аргумента (inDirection, inNormal), но я не могу понять, как это использовать. Любая помощь будет оценена по достоинству.Unity - как использовать Vector2.Reflect()

+0

Как говорят параметры, одно направление шара а другой - нормали стены. –

+0

Почему вы помечаете [тег: 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: зеленая стрелка