所以我目前正在尝试创建一个僵尸游戏,在那里我有一个脚本,将启用一个命中动画,如果它是"接近"给玩家。这个脚本的代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class ZombieNavMesh : MonoBehaviour
{
private Transform movePositionTransform;
private NavMeshAgent navMeshAgent;
private Animator animator;
static bool close;
private void Start()
{
movePositionTransform = GameObject.Find("Player").transform;
animator = GetComponent<Animator>();
}
private void Awake()
{
navMeshAgent = GetComponent<NavMeshAgent>();
}
private void Update()
{
if (!close)
{
navMeshAgent.destination = movePositionTransform.position;
animator.SetBool("Close", false);
}
if (close)
{
animator.SetBool("Close", true);
}
}
public void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
Debug.Log("Should hit");
close = true;
}
}
public void OnTriggerExit(Collider other)
{
if(other.tag == "Player")
{
Debug.Log("Should not hit");
close = false;
}
}
}
这里的问题是,如果一个僵尸进入触发器,另一个僵尸退出触发器,bool值close将被设置为false,所以两者都将执行行走动画;它应该是"close"。僵尸撞击动画,以及远距离僵尸行走动画。
去掉static bool close;
中的static
static
表示该类的所有版本和实例只有一个共享。