public void StartItemPlaying(int ItemIndex) { _PlayingItemIndex = ItemIndex; _CharaState = eCharaState.isItemPlaying; Stop(); Debug.Log(_PlayingItemIndex); }
private IEnumerator Routine_Move() { if (_Agent.pathStatus == NavMeshPathStatus.PathInvalid) { yield return(new WaitForSeconds(1.0f)); yield break; } //次の地点が見つかるまで待機 while (_Agent.pathStatus != NavMeshPathStatus.PathInvalid && _MoveTargetPoint == null && !CalcNextPoint()) { yield return(new WaitForSeconds(0.5f)); Debug.Log("Serching"); } if (Random.Range(0.0f, 100.0f) <= _RunPossibility) { //走り _CharaState = eCharaState.isRunning; _Animator.SetTrigger(_ID_Run); _Agent.speed = _RunSpeed; } else { //歩き _CharaState = eCharaState.isWalking; _Animator.SetTrigger(_ID_Walk); _Agent.speed = _WalkSpeed; } _Agent.isStopped = false; while (true) { _Agent.Move(transform.forward * _Agent.speed * 0.75f * Time.deltaTime); //到着まで移動 if (_MoveTargetPoint != null && _MoveTargetPoint.gameObject.activeInHierarchy) { if (Vector3.SqrMagnitude(Vector3.Scale(_MoveTargetPosition, new Vector3(1, 0, 1)) - Vector3.Scale(transform.position, new Vector3(1, 0, 1))) < 0.01f) { _LastMoveTargetPoint = _MoveTargetPoint; _MoveTargetPoint = null; break; } } else { if (Vector3.SqrMagnitude(Vector3.Scale(_MoveTargetPosition, new Vector3(1, 0, 1)) - Vector3.Scale(transform.position, new Vector3(1, 0, 1))) < 0.1f) { _LastMoveTargetPoint = _MoveTargetPoint; _MoveTargetPoint = null; break; } } _DestinationElapsedTime += Time.deltaTime; if (_DestinationElapsedTime >= _GiveUpAribalSeconds) { break; } yield return(null); } if (Random.Range(0.0f, 100.0f) <= _IntervalPossibility) { _MoveState = eMoveState.inIntarval; } else { _MoveState = eMoveState.isMoving; } }
private IEnumerator Routine_Intarval() { if (_Agent.pathStatus == NavMeshPathStatus.PathInvalid) { yield return(new WaitForSeconds(1.0f)); yield break; } _Agent.isStopped = true; //ランダムに次のモーションを設定 { List <eCharaState> table = new List <eCharaState>(); for (int i = 0; i < _Rate_Idle; ++i) { table.Add(eCharaState.isWaiting); } for (int i = 0; i < _Rate_Unique; ++i) { table.Add(eCharaState.inUnique); } for (int i = 0; i < _Rate_Happy; ++i) { table.Add(eCharaState.inHappy); } for (int i = 0; i < _Rate_Angry; ++i) { table.Add(eCharaState.inAngry); } for (int i = 0; i < _Rate_Sad; ++i) { table.Add(eCharaState.inSad); } for (int i = 0; i < _Rate_Funny; ++i) { table.Add(eCharaState.inFunny); } if (table.Count > 0) { _CharaState = table[Random.Range(0, table.Count)]; } else { _CharaState = eCharaState.isWaiting; } } if (_CharaState == eCharaState.isWaiting) { //待機中 _Animator.SetTrigger(_ID_Idle); float ElapsedSeconds = Random.Range(_MinMoveInterval, _MaxMoveInterval); while (ElapsedSeconds > 0.0f) { ElapsedSeconds -= Time.deltaTime; yield return(null); } } else if (_CharaState == eCharaState.inUnique) { //特殊モーション _Animator.SetTrigger(_ID_Unique); //変わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash != _ID_UniqueState) { yield return(null); } if (_CharaAudio) { _CharaAudio.Play(CharacterAudio.eAudioType.Unique); } //終わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash == _ID_UniqueState) { yield return(null); } } else if (_CharaState == eCharaState.inHappy) { //喜モーション _Animator.SetTrigger(_ID_Happy); //変わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash != _ID_HappyState) { yield return(null); } if (_CharaAudio) { _CharaAudio.Play(CharacterAudio.eAudioType.Happy); } //終わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash == _ID_HappyState) { yield return(null); } } else if (_CharaState == eCharaState.inAngry) { //怒モーション _Animator.SetTrigger(_ID_Angry); //変わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash != _ID_AngryState) { yield return(null); } if (_CharaAudio) { _CharaAudio.Play(CharacterAudio.eAudioType.Angry); } //終わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash == _ID_AngryState) { yield return(null); } } else if (_CharaState == eCharaState.inSad) { //哀モーション _Animator.SetTrigger(_ID_Sad); //変わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash != _ID_SadState) { yield return(null); } if (_CharaAudio) { _CharaAudio.Play(CharacterAudio.eAudioType.Sad); } //終わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash == _ID_SadState) { yield return(null); } } else if (_CharaState == eCharaState.inHappy) { //楽モーション _Animator.SetTrigger(_ID_Funny); //変わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash != _ID_FunnyState) { yield return(null); } if (_CharaAudio) { _CharaAudio.Play(CharacterAudio.eAudioType.Happy); } //終わるまで待機 while (_Animator.GetCurrentAnimatorStateInfo(0).fullPathHash == _ID_FunnyState) { yield return(null); } } _MoveState = eMoveState.isMoving; }
public void EndItemPlaying() { _PlayingItemIndex = null; _CharaState = eCharaState.isWaiting; Play(); }