【发布时间】:2015-08-23 08:34:06
【问题描述】:
所以我是 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)
是真的,但是如果我将播放器移动到右侧的任何位置,那就不是真的了。这会是什么原因?谢谢。
【问题讨论】:
-
我猜这种行为的原因是因为你只是在右边进行光线投射,当你通过右边的物体时,光线投射没有任何东西可以击中。跨度>
-
我一定不明白光线投射的原理,我认为这段代码应该做的是向其原点的右侧发送一条光线,然后如果有任何东西与该光线发生碰撞,则命中变为真实.这不是在做什么吗?
标签: unity3d collision-detection raycasting unity3d-2dtools