Unity - 如何使用Vector2.Reflect()

时间:2016-12-13 20:00:30

标签: c# unity3d vector pong breakout

我到处都看过包括Unity文档,但似乎无法找到如何使用Unity的Vector2.Reflect()函数的任何好例子。我试图用这个来控制球的方向(在2D爆发游戏中)当它撞到墙壁时。它需要2个参数(inDirection,inNormal)但我似乎无法弄清楚如何使用它。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:7)

enter image description here

inDirection

inNormal:黑色箭头

return output:红色箭头

ES6:绿色箭头

答案 1 :(得分:4)

inDirection应该是你的球的速度,inNormal应该是垂直于你的墙的单位矢量。

尝试将它放在你的球对象中:

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

注意:我目前无法测试该代码,因此可能需要根据事物的名称进行调整。