override public void OnActivate(AgentAction action) { base.OnActivate(action); Effect = null; // Time.timeScale = 0.2f; }
override public void Update() { UpdateFinalRotation(); // Debug.DrawLine(OwnerTransform.position + new Vector3(0, 1, 0), FinalPosition + new Vector3(0, 1, 0)); RotationProgress += Time.deltaTime * Owner.BlackBoard.RotationSmoothInMove; RotationProgress = Mathf.Min(RotationProgress, 1); Quaternion q = Quaternion.Slerp(StartRotation, FinalRotation, RotationProgress); Owner.Transform.rotation = q; if (MoveOk && AnimEngine[Action.Data.AnimName].time > AnimEngine[Action.Data.AnimName].length * 0.1f) { // Smooth the speed based on the current target direction float curSmooth = Owner.BlackBoard.SpeedSmooth * Time.deltaTime; Owner.BlackBoard.Speed = Mathfx.Hermite(Owner.BlackBoard.Speed, MaxSpeed, curSmooth); Owner.BlackBoard.MoveDir = Owner.Forward; float dist = Owner.BlackBoard.Speed * 2 * Time.deltaTime; MoveOk = Move(Owner.BlackBoard.MoveDir * dist); if (NoHitTimer < Time.timeSinceLevelLoad) { Owner.SoundPlayRoll(); NoHitTimer = Time.timeSinceLevelLoad + 0.75f; } // Åжϼ¼ÄÜÉ˺¦ Vector3 dirToPlayer = Player.Instance.transform.position - Owner.Transform.position; if (dirToPlayer.magnitude < Owner.BlackBoard.WeaponRange) { ActionInjury injury = ActionFactory.Create(ActionFactory.E_Type.E_INJURY) as ActionInjury; injury.Impuls = (dirToPlayer).normalized; Player.Instance.GetComponent <AnimComponent>().HandleAction(injury); Player.Instance.Owner.BlackBoard.Health -= 10; Player.Instance.comboHitNum = 0; } } if (Effect == null && Time.timeSinceLevelLoad > TimeToStartEffect && Time.timeSinceLevelLoad < TimeToEndEffect) { Effect = CombatEffectsManager.Instance.PlayWhirlEffect(Transform); } else if (Effect != null && Time.timeSinceLevelLoad > TimeToEndEffect) { CombatEffectsManager.Instance.ReturnWhirlEffect(Effect); Effect = null; } if (TimeToEndState < Time.timeSinceLevelLoad) { Owner.WorldState.SetWSProperty(E_PropKey.E_IDLING, true); Release(); } }
void InitializeRoll() { /*LayerMask mask = 11; * * Owner.GameObject.layer = mask.value;*/ State = E_State.Roll; CrossFade("attackRollLoop", 0.1f); Owner.BlackBoard.MotionType = E_MotionType.Roll; Effect = CombatEffectsManager.Instance.PlayRollEffect(Transform); }
override public void OnDeactivate() { // Time.timeScale = 1; Action.SetSuccess(); Action = null; if (Effect != null) { CombatEffectsManager.Instance.ReturnRolllEffect(Effect); } Effect = null; base.OnDeactivate(); }
override public void Update() { UpdateFinalRotation(); // Debug.DrawLine(OwnerTransform.position + new Vector3(0, 1, 0), FinalPosition + new Vector3(0, 1, 0)); RotationProgress += Time.deltaTime * Owner.BlackBoard.RotationSmoothInMove; RotationProgress = Mathf.Min(RotationProgress, 1); Quaternion q = Quaternion.Slerp(StartRotation, FinalRotation, RotationProgress); Owner.Transform.rotation = q; if (MoveOk && AnimEngine[Action.Data.AnimName].time > AnimEngine[Action.Data.AnimName].length * 0.1f) { // Smooth the speed based on the current target direction float curSmooth = Owner.BlackBoard.SpeedSmooth * Time.deltaTime; Owner.BlackBoard.Speed = Mathfx.Hermite(Owner.BlackBoard.Speed, MaxSpeed, curSmooth); Owner.BlackBoard.MoveDir = Owner.Forward; float dist = Owner.BlackBoard.Speed * Time.deltaTime; MoveOk = Move(Owner.BlackBoard.MoveDir * dist); if (NoHitTimer < Time.timeSinceLevelLoad) { Mission.Instance.CurrentGameZone.DoDamageToPlayer(Owner, Action.Data, Owner.BlackBoard.WeaponRange); NoHitTimer = Time.timeSinceLevelLoad + 0.75f; } } if (Effect == null && Time.timeSinceLevelLoad > TimeToStartEffect && Time.timeSinceLevelLoad < TimeToEndEffect) { Effect = CombatEffectsManager.Instance.PlayWhirlEffect(Transform); } else if (Effect != null && Time.timeSinceLevelLoad > TimeToEndEffect) { CombatEffectsManager.Instance.ReturnWhirlEffect(Effect); Effect = null; } if (TimeToEndState < Time.timeSinceLevelLoad) { Release(); } }
override public void OnDeactivate() { if (Action != null) { Action.SetSuccess(); Action = null; } Owner.BlackBoard.Speed = 0; if (Effect != null) { CombatEffectsManager.Instance.ReturnWhirlEffect(Effect); } Effect = null; base.OnDeactivate(); // Time.timeScale = 1; }
void InitializeStandUp() { /* LayerMask mask = 8; * * Owner.GameObject.layer = mask.value;*/ State = E_State.End; CrossFade("attackRollEnd", 0.1f); Owner.BlackBoard.MotionType = E_MotionType.Roll; EndOfStateTime = AnimEngine["attackRollEnd"].length * 0.95f + Time.timeSinceLevelLoad; CombatEffectsManager.Instance.ReturnRolllEffect(Effect); Effect = null; Owner.Sound.PlayRoll(); }
override public void OnActivate(AgentAction action) { base.OnActivate(action); Effect = null; }