Unity - 如何使用Vector2.Reflect()

Kaz*_*Kaz 1 c# vector unity-game-engine breakout pong

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

Lin*_*n C 9

在此输入图像描述

Vector2 Reflect(Vector2 inDirection, Vector2 inNormal):

inDirection:黑色箭头

inNormal: 红色箭头

return output: 绿色箭头


Ben*_*ury 7

inDirection应该是你的球的速度和inNormal应该是垂直于墙壁上的单位向量。

尝试将其放入您的球对象中:

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

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