Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        CheckCanMove();

        CheckSkillState();

        TP_Animator.CharacterState lastState = playerAnimator.State;

        playerHealth = playerInfo.GetVital((int)VitalName.Health);

        aiRig.AI.WorkingMemory.SetItem("DyingHealth", (int)(playerHealth.MaxValue * 0.1f));
        aiRig.AI.WorkingMemory.SetItem("health", playerHealth.CurValue);
        if (playerInfo.Level != _level)
        {
            aiRig.AI.WorkingMemory.SetItem("level", playerInfo.Level);
        }
        if (_speed != playerInfo.GetAbility((int)(AbilityName.MoveSpeed)).CurValue)
        {
            _speed = playerInfo.GetAbility((int)(AbilityName.MoveSpeed)).CurValue;
            aiRig.AI.WorkingMemory.SetItem("forwardSpeed", _speed);
        }

        rayCastTest();

        _state  = aiRig.AI.WorkingMemory.GetItem <string>("state");
        _attack = aiRig.AI.WorkingMemory.GetItem <string>("attackWay");

        if (_canShopping != playerInfo.CanShopping)
        {
            _canShopping = playerInfo.CanShopping;
            aiRig.AI.WorkingMemory.SetItem("canShopping", _canShopping);
        }

        if (_atHome != aiRig.AI.WorkingMemory.GetItem <bool>("atHome"))
        {
            aiRig.AI.WorkingMemory.SetItem("atHome", _atHome);
        }
        if (_atEnemyHome != aiRig.AI.WorkingMemory.GetItem <bool>("atEnemy"))
        {
            aiRig.AI.WorkingMemory.SetItem("atEnemy", _atEnemyHome);
        }

        if (_state == "runningForward")
        {
            if (lastState != TP_Animator.CharacterState.KnockingDown && lastState != TP_Animator.CharacterState.StandingUp && playerAnimator.CanMove())
            {
                if (playerAnimator.MoveDirection != TP_Animator.Direction.Forward)
                {
                    playerAnimator.MoveDirection = TP_Animator.Direction.Forward;
                    playerAnimator.State         = TP_Animator.CharacterState.Running;
                }
            }
        }

        if (_state == "runningBack")
        {
            if (lastState != TP_Animator.CharacterState.KnockingDown && lastState != TP_Animator.CharacterState.StandingUp && playerAnimator.CanMove())
            {
                playerAnimator.MoveDirection = TP_Animator.Direction.Backward;
                playerAnimator.State         = TP_Animator.CharacterState.Running;
            }
        }

        if (_state == "StoreEnergy")
        {
            if (!aiRig.AI.WorkingMemory.ItemExists("storeEnergyTimer"))
            {
                aiRig.AI.WorkingMemory.SetItem("storeEnergyTimer", 0);
            }
            float SETimer = aiRig.AI.WorkingMemory.GetItem <float>("storeEnergyTimer");
            if (SETimer < 5)
            {
                SETimer += Time.deltaTime;
                aiRig.AI.WorkingMemory.SetItem("storeEnergyTimer", SETimer);
                playerController.EnergyStoreInput(0);
            }
            else
            {
                _state = "Idle";
                aiRig.AI.WorkingMemory.SetItem("Task", 0);
                aiRig.AI.WorkingMemory.RemoveItem("storeEnergyTimer");
                playerAnimator.EnergyStoreInput(1);
            }
        }

        if (_state != playerAnimator.State.ToString())
        {
            if (_state == "Dead")
            {
                playerAnimator.Die();
            }
            if (lastState == TP_Animator.CharacterState.KnockingDown && !playerAnimator.LockAnimating)
            {
                playerAnimator.StandUp();
            }

            if (lastState != TP_Animator.CharacterState.KnockingDown && lastState != TP_Animator.CharacterState.StandingUp && lastState != TP_Animator.CharacterState.EnergyStoring && playerAnimator.Mode != TP_Animator.CharacterMode.Skilling)
            {
                switch (_state)
                {
                case "Idle":
                    playerAnimator.MoveDirection = TP_Animator.Direction.Stationary;
                    playerAnimator.State         = TP_Animator.CharacterState.Idle;
                    break;
                }
            }
        }

        if (_attack == "MagicAttack")
        {
            if (!playerAnimator.LockAttacking && !playerAnimator.LockAnimating)
            {
                if (lastState != TP_Animator.CharacterState.KnockingDown && lastState != TP_Animator.CharacterState.StandingUp && lastState != TP_Animator.CharacterState.EnergyStoring)
                {
                    playerAnimator.LockAttacking = true;
                    playerController.MagicAttackInput(0);
                }
            }
        }
    }
Beispiel #2
0
    /*void Jump()//can trigger all kinds of motion such as sound, particle...
     * {
     *      playerMotor.Jump();
     *      playerAnimator.Jump();
     * }*/

    void StandUpInput()
    {
        playerAnimator.StandUp();
    }
Beispiel #3
0
    // Update is called once per frame
    void Update()
    {
        if (Enemy != null)
        {
            aiRig.AI.WorkingMemory.SetItem("Enemy", Enemy);
        }
        if (type == MonsterType.monster)
        {
            if (BossScript != null)
            {
                Enemy = BossScript.aiRig.AI.WorkingMemory.GetItem <GameObject>("Enemy");
                aiRig.AI.WorkingMemory.SetItem("Enemy", Enemy);
                inLand = BossScript.inLand;
                aiRig.AI.WorkingMemory.SetItem("inLand", inLand);
            }
            else
            {
            }
        }
        else if (type == MonsterType.monsterBoss)
        {
            inLand = aiRig.AI.WorkingMemory.GetItem <bool>("inLand");
        }

        Recover = aiRig.AI.WorkingMemory.GetItem <bool>("recover");
        if (Recover)
        {
            playerInfo.GetVital((int)VitalName.Health).DamageValue = 0;
            myTransform.rotation = new Quaternion(myTransform.rotation.x, 0, myTransform.rotation.z, myTransform.rotation.w);
            foreach (MonsterScript ms in minions)
            {
                ms.playerInfo.GetVital((int)VitalName.Health).DamageValue = 0;
                ms.RotateToLand();
            }
        }
        playerHealth = playerInfo.GetVital((int)VitalName.Health);
        aiRig.AI.WorkingMemory.SetItem("health", playerHealth.CurValue);

        if (_speed != playerInfo.GetAbility((int)(AbilityName.MoveSpeed)).CurValue)
        {
            _speed = playerInfo.GetAbility((int)(AbilityName.MoveSpeed)).CurValue;
            aiRig.AI.WorkingMemory.SetItem("forwardSpeed", _speed);
        }


        if (_state == "InLand")
        {
            aiRig.AI.WorkingMemory.SetItem("state", "Idle");
        }

        _state = aiRig.AI.WorkingMemory.GetItem <string>("state");
        TP_Animator.CharacterState lastState = playerAnimator.State;

        if (playerAnimator.CanMove())
        {
            if (islocked)
            {
                islocked = false;
                aiRig.AI.WorkingMemory.SetItem("isLocked", islocked);
            }
        }
        else
        {
            if (!islocked)
            {
                islocked = true;
                aiRig.AI.WorkingMemory.SetItem("isLocked", islocked);
            }
        }

        if (_state == "runningForward")
        {
            if (playerAnimator.CanMove())
            {
                if (playerAnimator.MoveDirection != TP_Animator.Direction.Forward)
                {
                    playerAnimator.MoveDirection = TP_Animator.Direction.Forward;
                    playerAnimator.State         = TP_Animator.CharacterState.Running;
                }
            }
        }



        if (_state != playerAnimator.State.ToString())
        {
            /*if(_state == "Dead")
             *      playerAnimator.Die();*/
            if (lastState == TP_Animator.CharacterState.KnockingDown && !playerAnimator.LockAnimating)
            {
                playerAnimator.StandUp();
            }

            if (lastState != TP_Animator.CharacterState.Beinghit && lastState != TP_Animator.CharacterState.Dizzing && lastState != TP_Animator.CharacterState.Freeze && lastState != TP_Animator.CharacterState.Dead && lastState != TP_Animator.CharacterState.KnockingDown && lastState != TP_Animator.CharacterState.StandingUp && lastState != TP_Animator.CharacterState.Attacking001 && lastState != TP_Animator.CharacterState.Attacking002 && lastState != TP_Animator.CharacterState.Attacking003)
            {
                switch (_state)
                {
                case "Idle":
                    playerAnimator.MoveDirection = TP_Animator.Direction.Stationary;
                    playerAnimator.State         = TP_Animator.CharacterState.Idle;
                    break;
                }
            }
        }
        if (attackTimer == 0)
        {
            if (!playerAnimator.LockAttacking && !playerAnimator.LockAnimating)
            {
                _attack = aiRig.AI.WorkingMemory.GetItem <bool>("canAttack");
                if (_attack)
                {
                    if (lastState != TP_Animator.CharacterState.KnockingDown && lastState != TP_Animator.CharacterState.StandingUp && lastState != TP_Animator.CharacterState.EnergyStoring)
                    {
                        attackTimer = 1;
                        playerAnimator.LockAttacking = true;
                        playerAnimator.LockAnimating = true;
                        int way = 1;
                        if (type == MonsterType.monsterBoss)
                        {
                            way = (int)(Random.Range(1, 4 - 0.01f));
                        }
                        else if (type == MonsterType.monster)
                        {
                            way = (int)(Random.Range(1, 3 - 0.01f));
                        }
                        if (way == 1)
                        {
                            playerAnimator.Attack001();
                        }
                        else if (way == 2)
                        {
                            playerAnimator.Attack002();
                        }
                        else
                        {
                            playerAnimator.Attack003();
                        }
                    }
                }
            }
        }
    }