【发布时间】:2020-12-16 21:34:12
【问题描述】:
我正在使用 C# 在 Unity 中制作游戏,现在我正在开发一个可以向玩家发射弹丸的炮塔。它们工作正常,总是朝向玩家,但有时它们不会与玩家发生碰撞。它们直接穿过它们并进入地面,它们确实与之相撞。玩家和射弹的 Rigidbody2D 都设置为连续,所以我不知道发生了什么。经过一些基本测试后,下图显示了我发现的有关此碰撞错误的信息。抱歉,这只是一个快速的模型。
紫色点是炮塔本身和发射弹丸的地方,绿色是玩家几乎总是安全的地方,黄色是玩家有时安全的地方(看起来非常不一致,所以这只是一个近似值),红色是弹丸几乎总是与玩家发生碰撞的地方。我希望玩家始终与弹丸发生碰撞,无论它们在哪里。
我会添加我的代码,但它非常基本。正如我之前所说,我正在使用 C#,我只是使用 OnTriggerEnter2D 来查找冲突。玩家使用一个没有启用“is trigger”的盒子对撞机,而射弹使用一个盒子对撞机。对不起,如果这个问题真的很奇怪。如果您需要更多信息,请随时询问。
炮弹在炮塔处被实例化,它们的速度通过
Vector2 dir = playerRB.position - projectileRB.position;
angle = Mathf.Atan2(dir.y, dir.x);
xVel = projectileSpeed * Mathf.Cos(angle);
yVel = projectileSpeed * Mathf.Sin(angle);
projectileRB.velocity = new Vector2(xVel, yVel);
【问题讨论】:
-
请添加您的代码,特别是用于发射和移动弹丸以及玩家和子弹预制件的检查器设置
-
好的,如果有帮助,我添加了一些代码