private IEnumerator StateMachine() { WaitForSeconds oneSec = new WaitForSeconds(1); while (true) { switch (state) { case eCoworkerState.Idle: rb2d.velocity = Vector2.zero; anim.SetBool(AnimHash.Walking, false); break; case eCoworkerState.Walk: int i = Random.Range(0, 2); if (i == 1) // left { transform.rotation = Quaternion.Euler(0, 180, 0); } else // right { transform.rotation = Quaternion.Euler(0, 0, 0); } rb2d.velocity = transform.right * -speed; anim.SetBool(AnimHash.Walking, true); break; } state = (eCoworkerState)Random.Range(0, 2); yield return(oneSec); } }
private IEnumerator CoworkerMove() { WaitForSeconds oneSec = new WaitForSeconds(1); while (true) { yield return(oneSec); mState = (eCoworkerState)Random.Range(0, 2); if (Random.Range(0, 2) == 0) { transform.rotation = Quaternion.Euler(0, 0, 0); } else { transform.rotation = Quaternion.Euler(0, 180, 0); } switch (mState) { case eCoworkerState.Idle: mRB2D.velocity = Vector2.zero; mAnim.SetBool(AnimWalkHash, false); break; case eCoworkerState.Move: mRB2D.velocity = transform.right * -1; mAnim.SetBool(AnimWalkHash, true); break; default: Debug.LogError("wrong move state " + mState); break; } } }
#pragma warning restore 0649 // Start is called before the first frame update void Start() { mRB2D = GetComponent <Rigidbody2D>(); mAnim = GetComponent <Animator>(); mState = eCoworkerState.Idle; StartCoroutine(CoworkerMove()); }
// Start is called before the first frame update void Start() { state = eCoworkerState.Idle; StartCoroutine(StateMachine()); StartCoroutine(MakeIncome()); }