コード例 #1
0
    override public void OnActivate(AgentAction action)
    {
        base.OnActivate(action);

        Effect = null;
        //  Time.timeScale = 0.2f;
    }
コード例 #2
0
    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();
        }
    }
コード例 #3
0
    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);
    }
コード例 #4
0
    override public void OnDeactivate()
    {
        //    Time.timeScale = 1;

        Action.SetSuccess();
        Action = null;

        if (Effect != null)
        {
            CombatEffectsManager.Instance.ReturnRolllEffect(Effect);
        }

        Effect = null;
        base.OnDeactivate();
    }
コード例 #5
0
    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();
        }
    }
コード例 #6
0
    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;
    }
コード例 #7
0
    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();
    }
コード例 #8
0
    override public void OnActivate(AgentAction action)
    {
        base.OnActivate(action);

        Effect = null;
    }