public void DeathByInstaKill(CharacterControl attacker)
        {
            control.animationProgress.CurrentRunningAbilities.Clear();
            attacker.animationProgress.CurrentRunningAbilities.Clear();

            control.RIGID_BODY.useGravity = false;
            control.boxCollider.enabled   = false;
            control.SkinnedMeshAnimator.runtimeAnimatorController = Assassination_B;

            attacker.RIGID_BODY.useGravity = false;
            attacker.boxCollider.enabled   = false;
            attacker.SkinnedMeshAnimator.runtimeAnimatorController = Assassination_A;

            Vector3 dir = control.transform.position - attacker.transform.position;

            if (dir.z < 0f)
            {
                attacker.FaceForward(false);
            }
            else if (dir.z > 0f)
            {
                attacker.FaceForward(true);
            }

            control.transform.LookAt(control.transform.position + (attacker.transform.forward * 5f), Vector3.up);
            control.transform.position = attacker.transform.position + (attacker.transform.forward * 0.45f);

            hp = 0f;
        }
Esempio n. 2
0
        private void UpdateMomentum(CharacterControl control, AnimatorStateInfo stateInfo)
        {
            if (!control.animationProgress.RightSideIsBlocked())
            {
                if (control.MoveRight)
                {
                    control.animationProgress.AirMomentum += SpeedGraph.Evaluate(stateInfo.normalizedTime) * Speed * Time.deltaTime;
                }
            }

            if (!control.animationProgress.LeftSideIsBlocked())
            {
                if (control.MoveLeft)
                {
                    control.animationProgress.AirMomentum -= SpeedGraph.Evaluate(stateInfo.normalizedTime) * Speed * Time.deltaTime;
                }
            }

            if (control.animationProgress.RightSideIsBlocked() ||
                control.animationProgress.LeftSideIsBlocked())
            {
                control.animationProgress.AirMomentum =
                    Mathf.Lerp(control.animationProgress.AirMomentum, 0f, Time.deltaTime * 1.5f);
            }


            if (Mathf.Abs(control.animationProgress.AirMomentum) >= MaxMomentum)
            {
                if (control.animationProgress.AirMomentum > 0f)
                {
                    control.animationProgress.AirMomentum = MaxMomentum;
                }
                else if (control.animationProgress.AirMomentum < 0f)
                {
                    control.animationProgress.AirMomentum = -MaxMomentum;
                }
            }

            if (control.animationProgress.AirMomentum > 0f)
            {
                control.FaceForward(true);
            }
            else if (control.animationProgress.AirMomentum < 0f)
            {
                control.FaceForward(false);
            }

            if (!IsBlocked(control, Speed, stateInfo))
            {
                control.MoveForward(Speed, Mathf.Abs(control.animationProgress.AirMomentum));
            }
        }