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.
The magnitude of a Vector2 equals sqrt(x^2+y^2) . A Vector3 has a 3D direction, like a xyz point in a 3D space, or a color in RGB format, or a set of three numbers. e.g. (0,0,0) or (-0.1, 3.14, 30). The magnitude of a Vector3 equals sqrt(x^2+y^2+z^2) .
Min(Vector2, Vector2) Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. Multiply(Single, Vector2) Multiplies a scalar value by a specified vector. Multiply(Vector2, Single)
Vector2 Reflect(Vector2 inDirection, Vector2 inNormal)
:
inDirection
: black arrow
inNormal
: red arrow
return output
: green arrow
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With