所以我正在用Unity 360°射击制作2D平台游戏。 我希望我的子弹碰到东西(想想台球)时能被反射出来。
如果子弹从天花板或地板上弹起,则下面的代码有效。问题是,当我从侧面击打物体时,子弹的新方向正好偏离了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);
}
}
关于我哪里出了问题或如何解决此问题的任何建议?