public override void OnExit(Phenix.Unity.AI.WorldState ws) { if (_eventRoll != null) { _eventRoll.Release(); _eventRoll = null; } base.OnExit(ws); }
void SendEvent() { if (_rollDir == Vector3.zero) { return; } _eventRoll = AnimFSMEventRoll.pool.Get(); _eventRoll.direction = _rollDir; Agent.FSMComponent.SendEvent(_eventRoll); }
protected override void Initialize(FSMEvent ev) { _eventRoll = ev as AnimFSMEventRoll; _currentMoveTime = 0; _currentRotationTime = 0; _startRotation = Agent.Transform.rotation; _startPosition = Agent.Transform.position; Vector3 finalDir; if (_eventRoll.toTarget != null) { finalDir = _eventRoll.toTarget.Position - Agent.Transform.position; finalDir.Normalize(); _finalPosition = _eventRoll.toTarget.Position - finalDir * Agent.BlackBoard.weaponRange; } else { finalDir = _eventRoll.direction; _finalPosition = _startPosition + _eventRoll.direction * Agent.BlackBoard.rollDistance; } string animName = Agent.AnimSet.GetRollAnim(Agent.BlackBoard.weaponSelected, Agent.BlackBoard.weaponState); AnimationTools.PlayAnim(Agent.AnimEngine, animName, 0.1f); _finalRotation.SetLookRotation(finalDir); _rotationTime = Vector3.Angle(Agent.Transform.forward, finalDir) / 1000.0f; _moveTime = Agent.AnimEngine[animName].length * 0.85f; _endOfStateTime = Agent.AnimEngine[animName].length * 0.9f + Time.timeSinceLevelLoad; _rotationOk = _rotationTime == 0; _positionOK = false; Agent.BlackBoard.motionType = MotionType.ROLL; if (Agent.BlackBoard.showMotionEffect) { ParticleTools.Instance.Play(Agent.particleSystemRollTust, Agent.gameObject.ForwardRadian(), 0f); } }
public override void Reset() { base.Reset(); _eventRoll = null; }