6

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

4

2 回答 2

18

在此处输入图像描述

Vector2 Reflect(Vector2 inDirection, Vector2 inNormal)

inDirection: 黑色箭头

inNormal: 红色箭头

return output: 绿色箭头

于 2016-12-14T03:57:31.850 回答
9

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

试着把它放在你的球对象中:

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

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

于 2016-12-13T21:27:09.537 回答