You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

73 lines
1.9 KiB

using UnityEngine;
using System.Collections;
public class MoverController : EnemyController {
public Transform[] moveRoute;
public float moveSpeed;
public float moveCoolDown = 2;
public int routeLoc = 0;
private int routeMax;
private bool isMove = false;
private float lastMoveTime = 0.5f;
// Use this for initialization
protected override void Start () {
base.Start();
routeMax = moveRoute.Length;
transform.position = moveRoute[routeLoc % routeMax].position;
}
// Update is called once per frame
void FixedUpdate () {
if (Time.time - lastShotTime >= shotCoolDown) {
lastShotTime = Time.time;
Vector3 dir1 = (moveRoute[(routeLoc + 1) % routeMax].position - moveRoute[routeLoc % routeMax].position).normalized;
Vector3 dir2 = (moveRoute[mod ((routeLoc - 1), routeMax)].position - moveRoute[routeLoc % routeMax].position).normalized;
shoot(dir1);
shoot(dir2);
}
if (Time.time - lastMoveTime >= moveCoolDown) {
lastMoveTime = Time.time;
StartCoroutine(moveLocation(moveSpeed));
}
}
private IEnumerator moveLocation(float time) {
Vector3 start = moveRoute[routeLoc % routeMax].position;
Vector3 end = moveRoute[(routeLoc + 1 ) % routeMax].position;
float elapsedTime = 0;
Vector3 pos = start;
while ((elapsedTime / time) <= 1) {
pos = Vector3.Lerp(start, end, (elapsedTime / time));
transform.position = pos;
elapsedTime += Time.deltaTime;
yield return new WaitForEndOfFrame();
}
transform.position = end;
routeLoc++;
}
//c# modulo deals with negatives differently because it is a remainder call
//this fixes that
private int mod(int x, int m) {
return (x % m + m) % m;
}
}