Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 玩家don';当他在运动时,他不能发射射弹_C#_Unity3d - Fatal编程技术网

C# 玩家don';当他在运动时,他不能发射射弹

C# 玩家don';当他在运动时,他不能发射射弹,c#,unity3d,C#,Unity3d,当我投篮时,球员站着不动,射弹可以正常工作,但当我向前移动或跳跃时,射弹不能工作 我想这是因为我的子弹代码。我是Unity的初学者,所以我认为代码有问题 void Update() { transform.Translate(Vector3.right * speed * Time.deltaTime); } private void OnTriggerEnter2D(Collider2D other) { Destroy(gameObject); } 我很确定我知道你为什么

当我投篮时,球员站着不动,射弹可以正常工作,但当我向前移动或跳跃时,射弹不能工作

我想这是因为我的子弹代码。我是Unity的初学者,所以我认为代码有问题

void Update()
{
    transform.Translate(Vector3.right * speed * Time.deltaTime);
}

private void OnTriggerEnter2D(Collider2D other)
{
    Destroy(gameObject);
}

我很确定我知道你为什么会遇到这个问题,但是我会花一些时间告诉你将来如何调试这个问题

所以你说的是“射弹不起作用”,这并不意味着什么,但我假设它的意思是“它们不会繁殖”

这可能是因为两个原因:

  • 有些东西阻止了它们产卵
  • 它们会立即被删除
  • 在我们的例子中,它可能是2号。当你向前移动时,玩家会立即与自己的投射物碰撞,使其消失

    要确保情况属实,您可以通过编辑冲突代码来检查导致删除的对象:

    private void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log(other.name);
        Destroy(gameObject);
    }
    
    它可能是播放器,所以你不希望播放器与自己的子弹相撞。您可以通过两种方式解决此问题:

  • 检查冲突时,将Destroy放在条件语句中,例如:
    if(other.tag!=“Player”)
  • 为子弹添加图层,并防止该图层与玩家的图层发生碰撞
  • 使用
    Physics.IgnoreCollision(MyCollider,PlayerCollider)在Start()方法中排除子弹和播放器之间的碰撞(或物理2D,如果是2D)
  • 为了简单/解决您的问题,让我们使用数字1;将冲突代码编辑为有条件的:

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag != "Player") 
        {
            Destroy(gameObject);
        }
    }
    

    然后转到玩家对象,创建一个名为“玩家”的新层,并将其分配给玩家对象。

    我猜它与玩家碰撞器发生碰撞,您可以使用CompareTag添加一个检查-