Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
    // 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;
        }
    }