当我射击并且玩家静止不动时,弹丸工作正常,但是当我移动或向前跳跃时,弹丸不起作用。
我认为这是由于我的项目符号代码而发生的。我是Unity的初学者,所以我认为代码有问题。
void Update()
{
transform.Translate(Vector3.right * speed * Time.deltaTime);
}
private void OnTriggerEnter2D(Collider2D other)
{
Destroy(gameObject);
}
答案 0 :(得分:1)
我敢肯定,我知道您为什么会遇到此问题,但我将花一些时间向您展示如何在将来进行调试。
因此,您说的是“弹丸不起作用”,这实际上没有任何意义,但我认为它的意思是“它们不产生”。
这可能是由于两个原因:
在我们的例子中,它可能是2号。当您向前移动时,玩家会立即与自己的弹丸相撞,从而使其消失。
要确保是这种情况,您可以通过编辑碰撞代码来检查导致删除的对象:
private void OnTriggerEnter2D(Collider2D other)
{
Debug.Log(other.name);
Destroy(gameObject);
}
可能是玩家,所以您不希望玩家与自己的子弹相撞。您可以通过两种方式解决此问题:
if (other.tag != "Player")
Physics.IgnoreCollision(MyCollider, PlayerCollider);
(或Physics2D,如果是2D)在Start()方法中排除子弹与玩家之间的碰撞为简单起见/解决您的问题,让我们从数字1开始;将您的碰撞代码修改为有条件的:
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag != "Player")
{
Destroy(gameObject);
}
}
然后转到播放器对象并创建一个名为“ Player”的新图层,并将其分配给播放器对象。