public void Hurt() { _sprite.color = Color.red; _animator.SetBool("Hurt", true); State = BisonState.Hurt; _audio_source.PlayOneShot(HurtSound); GameManager.Instance.ScreenShake.Shake(2f, 0.3f); }
public void SpawnBison() { transform.position = SpawnPosition; StartAirPosition = new Vector3(StartAirPosition.x, Random.Range(MinHeight, MaxHeight), 0); EndAirPosition = new Vector3(EndAirPosition.x, StartAirPosition.y + 0.2f, 0); State = BisonState.Spawned; _animator.SetBool("Flying", true); _animator.SetBool("Hurt", false); }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.D)) { SpawnBison(); } switch (State) { case BisonState.Spawned: transform.position = Vector3.MoveTowards(transform.position, StartAirPosition, SpawnSpeed * Time.deltaTime); if ((transform.position - StartAirPosition).magnitude < 0.1f) { State = BisonState.InAir; } break; case BisonState.InAir: transform.position = Vector3.MoveTowards(transform.position, EndAirPosition, AirSpeed * Time.deltaTime); if ((transform.position - EndAirPosition).magnitude < 0.1f) { State = BisonState.Attack; } break; case BisonState.Attack: transform.position = Vector3.MoveTowards(transform.position, GameManager.Instance.Player.transform.position + AttackOffset, AttackSpeed * Time.deltaTime); if ((transform.position - GameManager.Instance.Player.transform.position - AttackOffset).magnitude < 0.1f) { GameManager.Instance.Player.Hurt(2); State = BisonState.Return; _animator.SetBool("Flying", false); } break; case BisonState.Return: transform.position = Vector3.MoveTowards(transform.position, SpawnPosition, SpawnSpeed * Time.deltaTime); if ((transform.position - SpawnPosition).magnitude < 0.1f) { State = BisonState.None; } break; case BisonState.Hurt: transform.position -= new Vector3(15f * GameManager.Instance.LevelSpeed, 0, 0) * Time.deltaTime; if (transform.position.x < SpawnPosition.x) { State = BisonState.None; } break; } }