private void DoAttackMode() { // 攻撃モードに移行 if (state == EnemyState.Attack) { return; } state = EnemyState.Attack; if (animator) { animator.SetTrigger("Attack"); AnimatorClipInfo[] anim_clip_info = animator.GetCurrentAnimatorClipInfo(0); Observable.Timer(TimeSpan.FromSeconds(anim_clip_info[0].clip.length)) .Subscribe(t => { if (state == EnemyState.Dead) { return; } state = EnemyState.Move; }).AddTo(this); MessageBroker.Default.Publish <PlaySe>(new PlaySe { name = entity.attack_voice }); } if (nmAgent) { nmAgent.ResetPath(); } transform.LookAt(player_position); }
private void DoIdleMode() { state = EnemyState.Idle; if (animator) { animator.SetTrigger("Move"); } if (nmAgent && nmAgent.enabled) { nmAgent.ResetPath(); } }
private void DoMoveMode() { // 移動モードに移行 state = EnemyState.Move; if (animator) { animator.SetTrigger("Move"); } if (nmAgent) { nmAgent.ResetPath(); if (!nmAgent.SetDestination(player_position)) { throw new Exception("NavMeshAgent.SetDestination return false: " + player_position); } } }
private void DoDeadMove() { state = EnemyState.Dead; transform.tag = "EnemyDead"; //if (animator) animator.SetTrigger("Die"); PlayerService.OnEnemyDead(); //Debug.Log("PlayerService.OnEnemyDead()"); outline.enabled = false; collider.enabled = false; nmAgent.enabled = false; /* * Observable.NextFrame().Subscribe(x => { * nmAgent.radius = 0.08f; * nmSurface.BuildNavMesh(); * }).AddTo(this); */ MessageBroker.Default.Publish <PlaySe>(new PlaySe { name = entity.dead_voice }); PlayerService.add_exp(entity.exp); }