If the reflected angle (green) is greater than 50º, I want to change its direction for an angle of 45º (orange).
public Vector2 direction = new Vector2(1,1); void FixedUpdate () { rb.velocity = direction * velocity; } private void OnCollisionEnter2D(Collision2D collision) { Vector2 normal = collision.contacts[0].normal; float angle = Vector2.Angle(direction, normal)); float angleComp = 180 - angle; Vector2 newDirection = Vector2.Reflect(direction, normal); newDirection.Normalize(); if (angleComp > 50) { newDirection = Quaternion.AngleAxis(direction.x * 45, Vector3.forward) * normal; newDirection.Normalize(); } direction = newDirection; }
Nenhum comentário:
Postar um comentário