public override void Finish() { path = null; tilesMoved = 0; state = UnitState.Idle; objective = EnemyObjective.Idle; active = false; sight.enabled = false; gameObject.GetComponent<SphereCollider>().enabled = true; gameObject.GetComponent<SphereCollider>().radius = .5f; tilesMoved = 0; Camera.main.GetComponent<EnemyController>().UnitFinished(); }
public override void Move() { /*if(path != null) { state = UnitState.Moving; timeStartedMoving = Time.time; startPos = transform.position; dest = path.Pop(); }*/ float timeSinceStarted = Time.time - timeStartedMoving; float percentageComplete = timeSinceStarted / timeOfMovement; transform.position = Vector3.Lerp(startPos, dest, percentageComplete); if (percentageComplete >= 1.0f) { if (tilesMoved == range || path.Count == 0) { //Finish(); objective = EnemyObjective.Attack; active = false; } else { percentageComplete = 0f; timeStartedMoving = Time.time; tilesMoved++; dest = path.Pop(); startPos = transform.position; } } }
// Update is called once per frame void Update() { if(active == true) objective = ai.Decide(this); switch (objective) { case EnemyObjective.Advance: //sight.enabled = false; //gameObject.GetComponent<SphereCollider> ().radius = range; Move(); break; case EnemyObjective.Attack: gameObject.GetComponent<SphereCollider>().enabled = false; Attack(); break; case EnemyObjective.FindCover: //gameObject.GetComponent<SphereCollider>().radius = .5F; break; case EnemyObjective.GetHealth: break; case EnemyObjective.Idle: break; case EnemyObjective.Retreat: break; } }
// Use this for initialization void Start() { gun = gameObject.GetComponent<Gun>(); ai = gameObject.GetComponent<EnemyAI>(); sight = gameObject.GetComponent<EnemySight>(); sight.enabled = false; objective = EnemyObjective.Idle; gameObject.name = unitName; SetMaxHP(locHP); AdjustHP(locHP); SetAttackRange(attRange); }