Я пишу код для моего AI моей игры в Unity и хочу запустить в том же коде агент NavMe sh для движения, Raycast и звуковой триггер (в контексте моей игры это враг, который чувствителен к звуку, и если он услышит его, он последует за его источником).
Примечание: Навигация по мне sh агент. Этот компонент прикреплен к мобильному персонажу в игре, чтобы позволить ему перемещаться по сцене, используя NavMe sh
. Raycasting обычно используется в разработке видеоигр для таких вещей, как определение линии обзора игрока
Я пытался запустить 2 отдельных скрипта вместе (Raycast и NavMe sh), но это не сработало. Извините, но я совершенно не знаю, когда дело доходит до кодирования в C#.
Вот код, который я написал:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IAVISIBILIDAD : MonoBehaviour
{
public Transform target;
public float moveSpeed = 3;
public float rotationSpeed = 3;
public float distance = 5f;
public bool Enabled = false;
public bool Detect = false;
private Transform myTransform;
void Awake()
{
myTransform = this.GetComponent<Transform>();
}
void Start()
{
target = GameObject.FindWithTag("Player").transform;
}
void Update()
{
if (Enabled)
{
myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed * Time.deltaTime);
RaycastHit info;
Debug.DrawRay(transform.position, transform.forward * distance, Color.red, 0.1f);
if (Physics.Raycast(transform.position, transform.forward, out info, distance))
{
if (info.collider.tag == "Player")
{
Detect = true;
}
else
{
Detect = false;
}
}
else
{
Detect = false;
}
}
if (Enabled && Detect)
{
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
Enabled = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
Enabled = false;
}
}
}