Пример #1
0
    void ChangeStatus(EmMyStatus newStatus)
    {
        timer     = 0f;
        curStatus = newStatus;
        switch (newStatus)
        {
        case EmMyStatus.Idle:
            actor.Idle();
            statusDuration = Random.Range(0, aiConf.idlMaxDuration);
            break;

        case EmMyStatus.RandomMoveDirection:
        case EmMyStatus.RandomMoveDirectionAfterAttack:
            Vector3[] dirs = new Vector3[]
            {
                new Vector3(0, 0, 1),
                new Vector3(1, 0, 1),
                new Vector3(1, 0, 0),
                new Vector3(1, 0, -1),
                new Vector3(0, 0, -1),
                new Vector3(-1, 0, -1),
                new Vector3(-1, 0, 0),
                new Vector3(-1, 0, 1),
            };
            randomMoveDir  = dirs[Random.Range(0, 8)];
            statusDuration = aiConf.moveMaxDuratoin;
            break;

        case EmMyStatus.MoveToTarget:
            break;

        case EmMyStatus.AttackPrepair:
            actor.Idle();
            statusDuration = aiConf.attackPrepairDuration;
            break;

        case EmMyStatus.NormalAttack:
            curNormalAttack = 0;
            break;

        case EmMyStatus.CastSkill:
            actor.DoAttack(canCastSkillId);
            break;

        case EmMyStatus.BeAttacked:
            break;
        }
    }
    void ChangeStatus(EmMyStatus newStatus)
    {
        timer     = 0f;
        curStatus = newStatus;
        switch (newStatus)
        {
        case EmMyStatus.Idle:
            Actor.Idle();
            statusDuration = FixedRandom.Range(0, idlMaxDuration);
            break;

        case EmMyStatus.RandomMoveDirection:
        case EmMyStatus.RandomMoveDirectionAfterAttack:
            Vector3[] dirs = new Vector3[]
            {
                new Vector3(0, 0, 1),
                new Vector3(1, 0, 1),
                new Vector3(1, 0, 0),
                new Vector3(1, 0, -1),
                new Vector3(0, 0, -1),
                new Vector3(-1, 0, -1),
                new Vector3(-1, 0, 0),
                new Vector3(-1, 0, 1),
            };
            randomMoveDir = dirs[FixedRandom.Range(0, 8)];
            randomMovePos = Actor.transform.position + randomMoveDir * 3;
            Actor.LookAt(randomMovePos);
            statusDuration = moveMaxDuratoin;
            break;

        case EmMyStatus.MoveToTarget:
            Actor.LookAt(attackTarget.transform.position);
            break;

        case EmMyStatus.AttackPrepair:
            Actor.Idle();
            statusDuration = attackPrepairDuration;
            break;

        case EmMyStatus.NormalAttack:
            Actor.Attack();
            break;

        case EmMyStatus.BeAttacked:
            break;
        }
    }