我有一个盒子碰撞器,应该像人工智能的视图,我有一个球员,有一个胶囊碰撞器和游戏对象的名称是"玩家".当我使用构建它void,即OnCollisionEnter和退出(顺便说一句,这没有工作,即使我使用的触发版本的void),它只是不检测到它.我试着判断是否玩家作为一个游戏对象与视觉碰撞器碰撞与"Equals()"命令,这没有工作.我附上了图片和我的整个人工智能脚本,如果有人知道如何解决这个问题.
和脚本
using System;
using UnityEngine;
using UnityEngine.AI;
namespace Demo.Scripts.Runtime
{
public class AI : MonoBehaviour
{
[Tab("Main")]
[Header("Zombie States")]
[SerializeField] public bool is_Chasing_Player;
[SerializeField, Range(0f, 10f)] public float speed = 5f;
[Tab("Navigation")]
[Header("NavMesh Stuff")]
[SerializeField] public NavMeshAgent agent;
[SerializeField] public Collider vision_Collider;
[Header("Player Location")]
[SerializeField] public Transform player;
[Tab("Animation")]
[Header("Head Animator")]
[SerializeField] public Animator animator;
[Header("Animator Controllers")]
[SerializeField] public RuntimeAnimatorController idle;
[SerializeField] public RuntimeAnimatorController walk;
[SerializeField] public RuntimeAnimatorController die;
private int count = 0;
private void Start()
{
animator.runtimeAnimatorController = idle;
agent = GetComponent<NavMeshAgent>();
animator = GetComponent<Animator>();
}
private void Update()
{
ZombieDie();
if (player != null && is_Chasing_Player)
{
if (count == 0)
{
animator.runtimeAnimatorController = walk;
count++;
}
agent.SetDestination(player.position);
agent.speed = speed;
}
if (!is_Chasing_Player && animator.runtimeAnimatorController != idle)
{
animator.runtimeAnimatorController = idle;
}
}
public void ZombieDie()
{
if (Input.GetKeyDown(KeyCode.I))
{
animator.runtimeAnimatorController = die;
agent.speed = 0;
speed = 0;
}
}
private void OnCollisionEnter(Collision collision)
{
if (collision.collider.CompareTag("Player"))
{
Debug.Log("Player entered vision collider");
}
}
private void OnCollisionExit(Collision collision)
{
if (collision.collider.CompareTag("Player"))
{
Debug.Log("Player exited vision collider");
}
}
}
}
当玩家与视觉碰撞器碰撞时,我正试图在控制台上写一句话.