Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
 private void DoIdleMode()
 {
     state = EnemyState.Idle;
     if (animator)
     {
         animator.SetTrigger("Move");
     }
     if (nmAgent && nmAgent.enabled)
     {
         nmAgent.ResetPath();
     }
 }
Ejemplo n.º 3
0
    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);
            }
        }
    }
Ejemplo n.º 4
0
    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);
    }