using System.Collections; using System.Collections.Generic; using UnityEngine; public class WRJController : MonoBehaviour { public List wayPoints = new List(); public int index1 = 0; public float speed; public HuoPaoController[] huoPaoControllerList; public List attackTarget = new List(); public bool isMove = false; public float dis; public float limitDis; public Transform firePos; public GameObject firePrefab; public bool isGoToPlace = false; public bool isAuto = false; public int fireCount; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { if (isMove) { MoveToway1(); } if (isGoToPlace) { InvokeRepeating("OnFire", 1, 1); isGoToPlace = false; } } public void MoveToway1() { //if (isAuto) //{ if (wayPoints.Count == 0) return; if (index1 > wayPoints.Count - 1) { return; } transform.localPosition = Vector3.MoveTowards(transform.localPosition, wayPoints[index1], speed * Time.deltaTime); if (Vector3.Distance(wayPoints[index1], transform.localPosition) < 0.01f) { index1++; if (index1 == wayPoints.Count) { transform.localPosition = wayPoints[index1 - 1]; isGoToPlace = true; isMove = false; } } //} //else //{ // if (index1 > attackTarget.Count - 1) { return; } // transform.localPosition = Vector3.MoveTowards(transform.localPosition, new Vector3(attackTarget[index1].transform.localPosition.x, attackTarget[index1].transform.localPosition.y + 180f, attackTarget[index1].transform.localPosition.z), speed * Time.deltaTime); // if (Vector3.Distance(attackTarget[index1].transform.localPosition, transform.localPosition) < 0.01f) // { // index1++; // if (index1 == attackTarget.Count) // { // transform.localPosition = attackTarget[index1 - 1].transform.localPosition; // isGoToPlace = true; // isMove = false; // } // } //} } public void SetAttackTarget(HuoPaoController target) { if (!attackTarget.Contains(target)) attackTarget.Add(target); } public void SetMove() { isMove = true; if (!isAuto) { wayPoints.Clear(); wayPoints.Add(new Vector3(-132.7299f, 149.0329f, -309.2459f)); wayPoints.Add(new Vector3(-98.94415f, 188.4612f, -219.9548f)); wayPoints.Add(new Vector3(-69.9848f, 212.5105f, -145.1433f)); wayPoints.Add(new Vector3(-2.413391f, 201.8178f, -24.47968f)); wayPoints.Add(new Vector3(48f, 191.4619f, 47f)); } } public int currentHuoPaoIndex = 0; private void OnFire() { //for (int i = 0; i < huoPaoControllerList.Length; i++) //{ if (fireCount <= 0) return; if (isAuto) { if (currentHuoPaoIndex >= huoPaoControllerList.Length - 1) { CancelInvoke("OnFire"); return; } if (huoPaoControllerList[currentHuoPaoIndex] == null) { currentHuoPaoIndex++; } if (firePos != null) { firePos.LookAt(huoPaoControllerList[currentHuoPaoIndex].transform.position); GameObject fire = Instantiate(firePrefab); fire.transform.eulerAngles = firePos.eulerAngles; fire.transform.position = firePos.position; fire.GetComponent().SetBoolIsMove(); } } else { if (currentHuoPaoIndex >= attackTarget.Count - 1) { CancelInvoke("OnFire"); return; } if (attackTarget[currentHuoPaoIndex] == null) { currentHuoPaoIndex++; } if (firePos != null) { firePos.LookAt(attackTarget[currentHuoPaoIndex].transform.position); GameObject fire = Instantiate(firePrefab); fire.transform.eulerAngles = firePos.eulerAngles; fire.transform.position = firePos.position; fire.GetComponent().SetBoolIsMove(); } } fireCount--; } }