示例#1
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.collider.name == "Sesame" && (tigerState == TigerState.Charge || tigerState == TigerState.JumpAttack))
     {
         collided = true;
         Debug.Log("Love Sesame");
         rigidbody.velocity = Vector3.zero;
         target.GetComponent <SesameHealth>().decrementHealth(40);
         tigerState = TigerState.Idol;
     }
 }
示例#2
0
    IEnumerator TigerStateMachine()
    {
        while (true)
        {
            Debug.Log("State Machine");
            if (target)
            {
                switch (tigerState)
                {
                case TigerState.Charge:
                    StartCoroutine("Charge");
                    yield return(new WaitUntil(() => finish));

                    tigerState = TigerState.Idol;
                    break;

                case TigerState.Idol:;
                    StartCoroutine("Idol");
                    yield return(new WaitForEndOfFrame());

                    break;

                case TigerState.JumpAttack:
                    StartCoroutine("JumpAttack");
                    yield return(new WaitUntil(() => finish));

                    tigerState = TigerState.Idol;
                    break;

                case TigerState.Attack:
                    StartCoroutine("Palm");
                    yield return(new WaitUntil(() => finish));

                    tigerState = TigerState.Idol;
                    break;

                case TigerState.Alert:
                    StartCoroutine("Alert");
                    yield return(new WaitUntil(() => finish));

                    tigerState = TigerState.Idol;
                    break;

                default:
                    yield return(new WaitUntil(() => finish));

                    break;
                }
            }
            yield return(new WaitForFixedUpdate());
        }
    }
示例#3
0
    IEnumerator Idol()
    {
        Debug.Log("Idol");
        float random = Random.Range(0, 3);

        if (CheckDistance() < 3f)
        {
            collided = false;
            if (random >= 0 && random < 1)
            {
                tigerState = TigerState.Attack;
            }
            else if (random >= 1 && random < 2)
            {
                tigerState = TigerState.Idol;
            }
            else if (random >= 2 && random < 3)
            {
                tigerState = TigerState.Alert;
            }
        }
        else
        {
            if (random >= 0 && random < 1)
            {
                tigerState = TigerState.Charge;
            }
            else if (random >= 1 && random < 2)
            {
                tigerState = TigerState.Alert;
            }
            else if (random >= 2 && random < 3)
            {
                tigerState = TigerState.JumpAttack;
            }
        }
        Debug.Log("end of idol attack");
        Debug.Log("Next State: " + tigerState);
        finish = false;
        yield return(null);
    }