找到锁死的目标:使用unity的Physics.OverlapBox;
红色的就是角色向前延申碰到的就是要锁的东西;判断是否碰到就是用overlapbox来判断;还要新增一个兴趣层级Enemty:
public void LockUnlock()
{
if (lockTarget == null)
{
//try to lock
Vector3 modleOrigin1 = modle.transform.position;//角色脚下的点
Vector3 modleOrigin2 = modleOrigin1 + new Vector3(0, 1, 0);//角色上半身点
Vector3 boxCenter = modleOrigin2 + modle.transform.forward * 5.0f;//盒子的中心点位置
Collider[] cols = Physics.OverlapBox(boxCenter, new Vector3(0.5f, 0.5f, 5.0f),modle.transform.rotation,LayerMask.GetMask("Enemy"));
foreach (var col in cols)
{
// print(col.name);
lockTarget = col.gameObject;//将被锁定的东西赋值给locktarget
break;
}
}
else
{
//relese lock
lockTarget = null;//如果里面有被锁物件那么就清空他
}
}
}