protected override void Update() { if (ScoreManager.Instance.GameController.IsRunning) { if (nextStateChangeTime == null && HasComeOnScreen) { nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier); } } if (Converted) { State = BowmanState.WANDER; } switch (State) { case BowmanState.WANDER: if (this.State == BowmanState.WANDER) { if (Time.time > nextSpriteChange) { SpriteState++; if (Converted && SpriteState == ConvertedSprites.GetLength(0)) { SpriteState = 0; } if (!Converted && SpriteState == UnconvertedSprites.GetLength(0)) { SpriteState = 0; } if (Converted) { spriteRenderer.sprite = ConvertedSprites[SpriteState]; } else { spriteRenderer.sprite = UnconvertedSprites[SpriteState]; } nextSpriteChange += AnimateInterval; } } break; case BowmanState.READY_FIRE: spriteRenderer.sprite = FiringSprites[0]; break; case BowmanState.FIRE: spriteRenderer.sprite = FiringSprites[1]; break; case BowmanState.COOLDOWN: spriteRenderer.sprite = FiringSprites[1]; break; } }
protected override void DoFrameAction() { switch (State) { case BowmanState.WANDER: this.Wander(); if (Time.fixedTime >= nextStateChangeTime) { State = FireOrWander(); nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier); } break; case BowmanState.READY_FIRE: if (Time.fixedTime >= nextStateChangeTime) { State++; nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier); } break; case BowmanState.FIRE: GameObject projectile = (GameObject)Instantiate(ProjectilePrefab, ArrowSpawnPoint.transform.position, Quaternion.identity); projectile.transform.localScale = this.transform.localScale; nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.BaseNPCFireCooldown * StateChangeTimeMultiplier); State++; break; case BowmanState.COOLDOWN: if (Time.fixedTime >= nextStateChangeTime) { State = FireOrWander(); nextStateChangeTime = Time.fixedTime + (ScoreManager.Instance.GameController.NPCBaseStateChangeTime * StateChangeTimeMultiplier); } break; } }