光线追踪未正确响应

Raytracing not responding correctly

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

我在屏幕上有两个对象,玩家和敌人。两者都附有 Rigidbody2D 和 Box Collider 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) 是真的,但如果我将播放器移动到右侧的任何位置,它就不是真的。这是什么原因?谢谢。

首先你不需要刚体来进行光线投射检测,只需要对撞机。其次,Physics2D.Raycast 使用世界位置,而不是本地位置,所以将 "transform.localPosition" 替换为 "transform.position",如果变换是某个东西的子级,这会把它弄得一团糟。请记住,您是从变换的右侧发送光线投射,因此它可能没有击中任何东西,您获得的值实际上是正确的。