private void Wander() { if (state != CapitalistState.DOWN) { state = CapitalistState.WANDER; Seeker seeker = GetComponent <Seeker>(); Vector2 wanderVector = new Vector2(Random.Range(-1f, 1f), Random.Range(-1f, 1f)).normalized; wanderVector *= wanderAmount; seeker.StartPath(transform.position, transform.position + (Vector3)wanderVector, OnPathComplete); } }
public override void Hit(int damage) { state = CapitalistState.DOWN; foreach (Collider2D c in GetComponentsInChildren <Collider2D>()) { c.enabled = false; } nextStateChangeTime = Time.time + downTime; updateSprites = false; spriteRenderer.sprite = downSprite; GameController controller = GameObject.Find("GameController").GetComponent <GameController>(); controller.PlaySound(controller.EnemyHitSound); }
protected override void PatrolDone() { base.PatrolDone(); if (state == CapitalistState.PATROL) { Wander(); } else { state = CapitalistState.PATROL; targetCereal = null; foundCereal = false; } }
protected override void Update() { switch (state) { case CapitalistState.PATROL: if (!foundCereal) { GameObject[] candidateCereals = GameObject.FindGameObjectsWithTag("Finish"); if (candidateCereals.Length > 0) { int idxChosenCereal = Random.Range(0, candidateCereals.Length); targetCereal = candidateCereals[idxChosenCereal]; foundCereal = true; Seeker seeker = GetComponent <Seeker>(); seeker.StartPath(transform.position, targetCereal.transform.position, OnPathComplete); } moveVector = Vector2.zero; } else if (path != null) { Patrol(); } if (Time.time > nextFireTime) { nextFireTime = Time.time + fireTime; if (Random.value <= fireChance) { FireProjectile(); } } break; case CapitalistState.WANDER: if (path != null) { Patrol(); } if (Time.time > nextFireTime) { nextFireTime = Time.time + fireTime; if (Random.value <= fireChance) { FireProjectile(); } } break; case CapitalistState.DOWN: moveVector = Vector2.zero; if (Time.time > nextStateChangeTime) { foreach (Collider2D c in GetComponentsInChildren <Collider2D>()) { c.enabled = true; } updateSprites = true; state = CapitalistState.WANDER; Wander(); } break; } base.Update(); }