光线追踪未正确响应
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",如果变换是某个东西的子级,这会把它弄得一团糟。请记住,您是从变换的右侧发送光线投射,因此它可能没有击中任何东西,您获得的值实际上是正确的。
所以我是 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",如果变换是某个东西的子级,这会把它弄得一团糟。请记住,您是从变换的右侧发送光线投射,因此它可能没有击中任何东西,您获得的值实际上是正确的。