void CheckCanMove() { if (!playerAnimator.CanMove()) { aiRig.AI.WorkingMemory.SetItem("forwardSpeed", 0); } else { aiRig.AI.WorkingMemory.SetItem("forwardSpeed", _speed); } }
void GetLocomotionInput() { var deadZone = 0.1f; //can be change depends on our need playerMotor.VerticalVelocity = playerMotor.MoveVector.y; playerMotor.MoveVector = Vector3.zero; if (playerAnimator.CanMove()) //||playerAnimator.State ==TP_Animator.CharacterState.Jumping)//can move when jump { if (Input.GetAxis("Vertical") > deadZone || Input.GetAxis("Vertical") < -deadZone) { playerMotor.MoveVector += new Vector3(0, 0, Input.GetAxis("Vertical")); } if (Input.GetAxis("Horizontal") > deadZone || Input.GetAxis("Horizontal") < -deadZone) { playerMotor.MoveVector += new Vector3(Input.GetAxis("Horizontal"), 0, 0); } playerAnimator.DetermineCurrentMoveDirection(); } }
// 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(); } } } } } }