光线跟踪无法正确响应

时间:2015-08-23 08:34:06

标签: unity3d collision-detection raycasting unity3d-2dtools

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

屏幕上有两个物体,玩家和敌人。两者都附有Rigidbody2D和Box Collider 2D。在Box Collider 2D上我点击了is triggered On 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 个答案:

答案 0 :(得分:1)

首先,您不需要Rigidbody进行光线投射检测,只需要碰撞器。其次,Physics2D.Raycast使用世界位置,而不是本地位置,所以替换" transform.localPosition"使用" transform.position"如果转换是某种东西的孩子,这会让它变得很乱。请记住,你是从变换的右侧发送光线投射,所以也许它没有击中任何东西,你得到的值实际上是正确的。