, поэтому я делаю 2D платформерную игру со стрельбой на 360 ° в Unity.
Я хочу, чтобы мои пули отражались, когда они что-то били (например, бильярд).
Код ниже работает, если пули рикошетят с потолка или пола. Проблема в том, что когда я бью что-то со стороны, новое направление пули точно на 180 °.
private void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.tag != "Player" && col.gameObject.tag != "Bullet")
{
ContactPoint2D[] contacts = new ContactPoint2D[10];
col.GetContacts(contacts);
Vector3 currentBulletMoveVector = transform.right;
Vector2 newBulletMoveVector = Vector2.Reflect(currentBulletMoveVector, contacts[0].normal);
transform.right = new Vector3(newBulletMoveVector.x, newBulletMoveVector.y, 0);
}
}
Любой совет, где я ошибся или как это исправить?