Unity3d RaycastHit2D并不总是检测到命中
我正在学习Unity游戏开发,我无法正确修复敌人的AI。我的游戏是一个简单的自上而下的射击游戏,我不希望我的敌人互相重叠。我决定在敌人面前投射一道光线,检查是否有障碍物(另一个敌人) 敌人有一个刚体和盒子对撞机。它们在正确的方向上投射光线(由Debug.Drawray()检查),但它们在站在相同的位置之前不会检测到任何命中。(即,他们正在移动到我的位置,一旦他们停止,就会检测到击中) 我想知道我做错了什么,在过去的几天里我不能让它正常工作。也许有人知道什么地方可能出了问题 来自单个敌方管理者的代码:Unity3d RaycastHit2D并不总是检测到命中,unity3d,raycasting,Unity3d,Raycasting,我正在学习Unity游戏开发,我无法正确修复敌人的AI。我的游戏是一个简单的自上而下的射击游戏,我不希望我的敌人互相重叠。我决定在敌人面前投射一道光线,检查是否有障碍物(另一个敌人) 敌人有一个刚体和盒子对撞机。它们在正确的方向上投射光线(由Debug.Drawray()检查),但它们在站在相同的位置之前不会检测到任何命中。(即,他们正在移动到我的位置,一旦他们停止,就会检测到击中) 我想知道我做错了什么,在过去的几天里我不能让它正常工作。也许有人知道什么地方可能出了问题 来自单个敌方管理者的代
Vector2 startPos = transform.position;
Vector2 endPos = transform.right * 10; // transform right as they are rotated by 90 degrees to the right.
Debug.DrawRay(startPos, endPos);
RaycastHit2D hit = Physics2D.Raycast(startPos, endPos, 10f);
if (hit && hit.collider.gameObject != gameObject)
{
Debug.Log(hit.transform.name + " was hit");
}
更新
只需在项目设置“查询在碰撞器中启动”中取消选中即可找到解决方案
转到编辑->项目设置->物理2D->取消选中“在碰撞器中开始查询”