我现在还不太了解Physics.OverlapSphere的工作原理。如下代码所示,如果玩家进入了重叠球,那么它应该返回true,但是当玩家进入该球时,我会不断出错。 这是调用方法
的脚本void Update()
{
float distance = Vector3.Distance(target.position,transform.position);
if (distance <= lookRadius)
{
agent.SetDestination(target.position);
if (distance <= agent.stoppingDistance)
{
CharacterStats targetStats = target.getcomponent<CharacterStats>();
Debug.Log(enemy.onPlayerEnter());
if (targetStats != null && enemy.onPlayerEnter())
{//if player exist and the player enters the attack area
Combat.Attack(targetStats);
}
Facetarget();
}
}
animator.setfloat("speed",agent.velocity.magnitude);
这是方法的脚本:
public bool onPlayerEnter()
{
Collider[] hitColliders = Physics.OverlapSphere(interactionTransform.transform.localPosition,radius);
//Debug.Log(interactionTransform.transform.localPosition);
for(int i = 0; i < hitColliders.Length; i++)
{
if(LayerMask.LayerToName(hitColliders[i].gameObject.layer) == "Player")
{
Debug.Log("Player enter");
return true;
}
}
return false;
}
//visualize the overlapsphere
private void OnDrawGizmosSelected()
{
if (interactionTransform == null) interactionTransform = transform;
Gizmos.color = Color.cyan;
Gizmos.DrawWireSphere(interactionTransform.position,radius);
}
collider with monster [与玩家碰撞[] [1]] [2]
https://i.stack.imgur.com/8Fgh0.png https://i.stack.imgur.com/jnubp.png
由于未知原因,我发现重叠球在地图中的特定位置起作用,但其余位置根本不起作用。我认为这可能是Unity中的错误。