/// <summary> /// Start the enemy's basic movement logic /// inwave determines the movement speed and initial delay of this enemy; /// Short delays and higher movement speed = high difficulty /// </summary> /// <param name="inwave">Inwave.</param> public void BeginLogic(int inwave) { if (PathTraveller == null) { PathTraveller = GetComponent <RFPathTraveller>(); PathTraveller.endpointCallback = ReachedEndpoint; } wave = inwave; float travelSpeedMult = 1.0f; for (int cnt = 1; cnt < wave; cnt++) { MoveDelay *= 0.75f; // Decrease move delay 25% per wave FireDelay *= 0.9f; // Decrease fire delay 10% per wave travelSpeedMult *= 1.1f; // Increase move speed 10% per wave } isGameOver = false; PathTraveller.CacheStartPosition(); PathTraveller.MoveSpeed *= travelSpeedMult; escape_speed = PathTraveller.MoveSpeed; StartCoroutine(StartMovement()); }
/// <summary> /// Reached the endpoint of the travel path /// </summary> /// <param name="traveller">Script that called this method</param> public void ReachedEndpoint(RFPathTraveller traveller) { float speed = 7; moveToLocal = true; MoveToLocation mv = GetComponent <MoveToLocation>(); mv.StartMove(transform.localPosition, startLocalPosition, true, speed); }
void OnSceneGUI() { if (viewPath) { RFPathTraveller traveller = target as RFPathTraveller; if (traveller) { List <Vector3> currPath = traveller.CurrentPath; if (currPath != null) { Handles.color = Color.gray; for (int cnt = 0; cnt < currPath.Count; cnt++) { Handles.SphereHandleCap(0, currPath[cnt], Quaternion.identity, 0.05f, EventType.Repaint); } } } } }
void Awake() { PathTraveller = GetComponent <RFPathTraveller>(); PathTraveller.endpointCallback = ReachedEndpoint; }