代码之家  ›  专栏  ›  技术社区  ›  helpme

Unity Raycast2D只能发射1个单位

  •  0
  • helpme  · 技术社区  · 8 年前

    我有一个带枪的2D角色,我想实例化一个爆炸,他的子弹与其他物体碰撞。

    var hit: RaycastHit2D = Physics2D.Raycast(transform.position, Vector2.right);
    if (hit.collider != null){
        boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity);
    }
    

    现在的问题是我开火,爆炸总是像我的角色面前的一个单位一样实例化,即使那里什么都没有。我不知道为什么。

    2 回复  |  直到 8 年前
        1
  •  4
  •   Programmer    8 年前

    最大的问题是你

    创建一个“敌人”标签,将你的敌人放入该标签中。当光线投射不是 null ,在实例化任何东西之前,确保敌人确实被击中。

    if (hit.collider != null)
    {
        if (hit.collider.CompareTag("Enemy"))
        {
            boomClone2 = Instantiate(boom, new Vector3(hit.point.x, hit.point.y, transform.position.z - 1), Quaternion.identity);
        }
    }
    

    this

        2
  •  2
  •   Hieu Nguyen Trung    8 年前

    您应该更改raycast的原点。也可以为玩家创建新层。并在光线投射时排除该层。

    RaycastHit2D hit = Physics2D.Raycast (transform.position, Vector2.right, ~(LayerMask.GetMask ("player")));
    
    推荐文章