В настоящее время работаю над чем-то для моих промежуточных курсов, но я застрял в одной конкретной части. Персонаж ИИ должен следовать по пути, используя точки пути, а затем остановиться на вершине круга, чтобы выстрелить (разрушить) стену, чтобы добраться доконечная точка пути.ИИ-персонаж должен сделать это до того, как Башня, находящаяся рядом, стреляет и уничтожает ее.Персонаж AI имеет 3 очка здоровья и умирает, если выстрелил три раза.После каждого выстрела у Башенки происходит охлаждение, поэтому она дает персонажу ИИ время, чтобы сбить стену.
Часть, в которой я застрял, - это когда персонаж ИИ достигает точки пути, чтобы сбить стену (что я еще не реализовал). Турель стреляет один раз и больше не стреляет.Тем не менее, Raycast работает, потому что он смотрит на AI, пока он находится в диапазоне.
Вот моя башня. Сценарий:
using UnityEngine;
using System.Collections;
public class TurretScript : MonoBehaviour {
public float rangeToPlayer;
public GameObject bullet;
public GameObject spawn;
private GameObject player;
private bool firing = false;
private float fireTime;
private float coolDown = 0.5F;
void Start () {
player = GameObject.FindWithTag("Player");
}
void Update () {
if ( PlayerInRange() ) {
transform.LookAt(player.transform.position);
RaycastHit hit;
if( Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit )) {
Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 20.0F, Color.red);
if (hit.transform.gameObject.tag == "Player") {
if ( firing == false )
{
firing = true;
fireTime = Time.time;
GameObject.Instantiate(bullet, spawn.transform.position, transform.rotation);
}
}
}
}
if ( firing && fireTime + coolDown <= Time.time )
firing = true;
}
bool PlayerInRange() {
return ( Vector3.Distance(player.transform.position, transform.position) <= rangeToPlayer );
}
}