我正在Unity 2D中制作一个游戏,我想让玩家从枪里射出的子弹在击中墙壁后反弹。我为子弹做的脚本是这样的:
public float speed = 40f;
public Rigidbody2D rb;
private Vector2 direction;
public void Start()
{
rb.velocity = transform.right * speed;
}
private void OnCollisionEnter2D(Collision2D collision)
{
Vector2 inNormal = collision.contacts[0].normal;
direction = Vector2.Reflect(rb.velocity, inNormal);
rb.velocity = direction * speed;
}
我在对撞机上放了一种2D物理材料,它有1.15的摩擦力和0.1的弹跳力,可以让球反弹(因为以前没有这种材料就不会反弹(,但现在每次我射击时,球都会以不同的速度从墙上反弹。有时子弹的速度太快,会穿过墙壁,这根本不是故意的。相反,我希望球以同样的速度从一堵墙反弹到另一堵墙,但我不知道如何解决这个问题。有人能帮我吗?
你不需要代码的onCollision部分来让它反弹,这是拥有刚体、对撞机和材料的关键。团结为你计算。
使子弹动态身体,如果它移动过快,检测碰撞变化碰撞检测";刚体(在墙上,但可能在子弹上(从离散到连续。它应该反弹。如果角度和速度总是一样,结果也总是一样的。我怀疑你有两个不同的结果,因为你正在超越实际的冲突。