void Update()
 {
     Movement.RemoveFromDirection(LastSeenForceByKeyPress.normalized, 1);
     LastSeenForceByKeyPress = ForceByKeyPress;
     Movement.AddToDirection(ForceByKeyPress.normalized, 1);
     ForceByKeyPress = Vector3.zero;
 }
예제 #2
0
 private void RemoveLastRandomMovement(MovableBody movableBody)
 {
     movableBody.RemoveFromDirection(
         LastAddedMovement,
         LastAddedMovementMagnitude
         );
 }
    private IEnumerator EndAfter(
        float duration,
        float bonusSpeed,
        float bonusAcceleration,
        Vector3 direction
        )
    {
        float timer = 0;

        while (timer < duration && IsCharging == true)
        {
            timer += Time.deltaTime;
            Ray          ray          = new Ray(Caster.transform.position, direction);
            RaycastHit[] hits         = Physics.RaycastAll(ray, 0.125f);
            bool         didHitTarget = false;
            foreach (RaycastHit hit in hits)
            {
                if (hit.collider.gameObject == Caster.gameObject)
                {
                    continue;                                              //dont collider with self
                }
                if (hit.collider.gameObject.layer == Caster.layer)
                {
                    continue;                                               //dont collide with shared tags as caster
                }
                if (hit.collider.GetComponent <OnDamageEventEmitter>() != null)
                {
                    Skill.GetEmitter().Emit(new OnCastHitTargetEventData(
                                                Caster,
                                                hit.collider.gameObject
                                                ));
                    didHitTarget = true;
                }
            }
            if (didHitTarget)
            {
                break;
            }
            yield return(null);
        }
        IsCharging = false;
        MovableBody.SetMaxSpeed(MovableBody.GetMaxSpeed() - bonusSpeed);
        MovableBody.SetAcceleration(MovableBody.GetAcceleration() - bonusAcceleration);
        MovableBody.RemoveFromDirection(direction, MovementWeighting);
        if (ColorShifter != null)
        {
            ColorShifter.ShiftToColor(new Color(1f, 0f, 0f), new Color(1f, 1f, 1f), duration / 4f);
        }
        Skill.GetEmitter().Emit(new OnCastEndEventData(
                                    Caster
                                    ));
    }