Unity - how to use Vector2.Reflect()

耗尽温柔 提交于 2019-12-20 04:38:16

问题


I have looked everywhere including the Unity documentation but cannot seem to find any good examples of how to use Unity's Vector2.Reflect() function. I am trying to use this to control the direction of the ball (in a 2D Breakout game) when it hits a wall. It takes 2 arguments (inDirection, inNormal) but I cannot seem to figure out how to use this. Any help would be appreciated.


回答1:


Vector2 Reflect(Vector2 inDirection, Vector2 inNormal):

inDirection: black arrow

inNormal: red arrow

return output: green arrow




回答2:


The inDirection should be the velocity of your ball and the inNormal should be the unit vector that is perpendicular to your wall.

Try putting this in your ball object:

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

NOTE: I cannot currently test that code, so it may need tweaking in terms of the names of things.



来源:https://stackoverflow.com/questions/41129573/unity-how-to-use-vector2-reflect

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!