Unity3d 统一:玩家在敌人面前检查不工作,物理。光线投射?

Unity3d 统一:玩家在敌人面前检查不工作,物理。光线投射?,unity3d,Unity3d,这将使用以下两个用例显示游戏场景: 玩家不能被敌人看到: 玩家可以被敌人看到: 我使用以下代码来决定玩家和敌人之间的视线是否清晰,以便敌人进行攻击,即,只有当玩家和敌人之间没有墙或任何其他碰撞机时,敌人才应进行攻击: void playerRangeofEnmy() { //在检查玩家是否在敌人的射程内后,检查他们之间的视线 Transform Player=FindObjectOfType().Transform; Vector2光线方向=Player.position-transform

这将使用以下两个用例显示游戏场景:

玩家不能被敌人看到:

玩家可以被敌人看到:

我使用以下代码来决定玩家和敌人之间的视线是否清晰,以便敌人进行攻击,即,只有当玩家和敌人之间没有墙或任何其他碰撞机时,敌人才应进行攻击:

void playerRangeofEnmy()
{
//在检查玩家是否在敌人的射程内后,检查他们之间的视线
Transform Player=FindObjectOfType().Transform;
Vector2光线方向=Player.position-transform.position;//-->transform.position是敌人的
雷卡斯特击中;
if(物理光线投射(变换位置、光线方向、命中率、距离))
{        
Debug.Log(“Ray击中播放器”);//不登录上述两种情况中的任何一种
if(hit.collider.gameObject.CompareTag(“玩家”))
{
//以下行也未被记录
Log(“让敌人攻击玩家”);
}
}
}
敌人和玩家都是动态刚体
Distance
是我想要投射的光线投射的长度,现在设置为100以进行测试


如何使条件为真,以便执行两个日志?上述代码有任何更新吗?

您使用的是3d物理,而不是2d物理。请改用Physics2D.Raycast。

哦,我错过了这么重要的一点!现在它正在执行第一个日志注释,但是光线投射只是命中背景碰撞器,如何使光线投射只命中播放器碰撞器?我可以忽略其他对撞机吗?可以。查找raycast方法的详细信息有许多重载