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

光线跟踪未正确响应

  •  1
  • HelloWorld  · 技术社区  · 9 年前

    所以我是Unity的新手,我肯定我错过了一个简单的步骤,但在网上找了一段时间后,由于某种原因,我找不到解决方案。

    我在屏幕上有两个对象,玩家和敌人。两者都附带了刚体2D和长方体碰撞器2D。在Box Collider 2D上,我单击 is triggered 在Rigidbody2D上,我都点击了 Is Kinematic 在播放器上,我有一个简单的动作脚本。在敌人的目标上,我有这样一个:

    void Update () {
        RaycastHit2D hit = Physics2D.Raycast(transform.localPosition,transform.right,Mathf.Infinity);
        Debug.DrawRay(transform.localPosition,transform.right);
        if (hit)
          Debug.Log(hit.collider);
    }
    

    现在由于某种原因,当我将玩家移到物体上时 if (hit) 是真的,但如果我把球员移到右边的任何地方,那就不是真的。这是什么原因?谢谢

    1 回复  |  直到 9 年前
        1
  •  1
  •   Neven Ignjic    9 年前

    首先,光线投射检测不需要刚体,只需要碰撞器。第二,Physics2D。Raycast使用的是世界位置,而不是局部位置,因此将“transform.localPosition”替换为“transform.position”,如果变换是某个对象的子对象,这会使其非常混乱。请记住,您正在从变换的右侧发送光线投射,因此可能它没有命中任何对象,并且您获得的值实际上是正确的。