Ejemplo n.º 1
0
    public override void Execute(AbilityParameters parameters)
    {
        Vector3 axisInput = parameters.heldDirection;

        if (!trackX)
        {
            axisInput.x = 0;
        }
        if (!trackY)
        {
            axisInput.y = 0;
        }

        if (axisInput == Vector3.zero)
        {
            if (currentSpeed > 0)
            {
                currentSpeed -= moveAccel;
                currentSpeed  = Mathf.Clamp(currentSpeed, 0, Mathf.Infinity);
            }
        }
        else
        {
            currentSpeed           += moveAccel;
            currentSpeed            = Mathf.Clamp(currentSpeed, 0, maxSpeed);
            lastDirection           = axisInput;
            parameters.origin.right = axisInput;
        }
        isRunning = axisInput != Vector3.zero;
        Vector3 movement = parameters.origin.right * currentSpeed;

        parameters.origin.GetComponent <Rigidbody>().MovePosition(parameters.origin.position + movement * Time.deltaTime);
    }
Ejemplo n.º 2
0
 public override void Execute(AbilityParameters parameters)
 {
     base.Execute(parameters);
     if (canActivate && parameters.heldButton)
     {
         Vector3    calcOffset = parameters.origin.position + (Mathf.Sign(parameters.origin.right.x) * weaponOffset);
         GameObject newProj    = Instantiate(weapon, calcOffset, Quaternion.identity, parameters.origin);
         currentActivationRate = activationRate;
     }
 }
Ejemplo n.º 3
0
 public override void Execute(AbilityParameters parameters)
 {
     base.Execute(parameters);
     if (canActivate && parameters.heldButton)
     {
         GameObject newProj = Instantiate(projectile, parameters.origin.position, Quaternion.identity);
         newProj.transform.right = parameters.origin.right;
         newProj.layer           = parameters.origin.gameObject.layer;
         currentActivationRate   = activationRate;
     }
 }
Ejemplo n.º 4
0
    public override void UpdateAbility(AbilityParameters parameters = null)
    {
        base.UpdateAbility(parameters);
        Ray groundRay = new Ray(parameters.origin.position, -parameters.origin.transform.up);

        if (Physics.Raycast(groundRay, groundRayLength, groundLayers) && jumping)
        {
            jumping = false;
        }
        isRunning = jumping;
    }
Ejemplo n.º 5
0
    public override void UpdateAbility(AbilityParameters parameters = null)
    {
        base.UpdateAbility(parameters);

        if (currentFloatTime > 0)
        {
            parameters.origin.GetComponent <Rigidbody>().velocity = Vector3.zero;
            currentFloatTime -= Time.deltaTime;
        }
        parameters.origin.GetComponent <ConstantForce>().enabled = currentFloatTime <= 0;
        parameters.origin.GetComponent <Rigidbody>().isKinematic = currentFloatTime > 0;

        if (!canDash)
        {
            Ray groundRay = new Ray(parameters.origin.position, -parameters.origin.up);
            canDash = Physics.Raycast(groundRay, groundRayLength, groundLayers);
        }

        Debug.Log(dashTween == null);
    }
Ejemplo n.º 6
0
 public override void Execute(AbilityParameters parameters)
 {
     if (parameters.heldButton)
     {
         parameters.origin.GetComponent <Rigidbody>().AddForce(parameters.origin.up * currentJumpStrength, ForceMode.VelocityChange);
         currentJumpStrength -= jumpFalloff;
         if (currentJumpStrength < 0f)
         {
             currentJumpStrength = 0;
         }
     }
     else
     {
         Ray groundRay = new Ray(parameters.origin.position, -parameters.origin.transform.up);
         if (Physics.Raycast(groundRay, groundRayLength, groundLayers))
         {
             currentJumpStrength = jumpStrength;
         }
     }
 }
Ejemplo n.º 7
0
    public override void Execute(AbilityParameters parameters)
    {
        base.Execute(parameters);
        if (canActivate && parameters.heldButton)
        {
            Collider[] targets = Physics.OverlapSphere(parameters.origin.position, maxDashDistance, validTargetLayers);

            if (targets.Length > 0)
            {
                GameObject dashTarget = null;
                float      shortDist  = maxDashDistance;
                foreach (Collider target in targets)
                {
                    float targetDist = Vector3.Distance(parameters.origin.position, target.transform.position);

                    float facing = Mathf.Sign(parameters.origin.right.x);
                    float dir    = Mathf.Sign((target.transform.position - parameters.origin.position).x);
                    if (targetDist <= shortDist && facing == dir)
                    {
                        shortDist  = Vector3.Distance(parameters.origin.position, target.transform.position);
                        dashTarget = target.gameObject;
                    }
                }
                if (dashTarget)
                {
                    DashTowards(parameters.origin, dashTarget.transform.position);
                }
                else
                {
                    Vector3 location = parameters.origin.position + (parameters.heldDirection * maxDashDistance);
                    Dash(parameters.origin, location);
                }
            }
            else
            {
                Vector3 location = parameters.origin.position + (parameters.heldDirection * maxDashDistance);
                Dash(parameters.origin, location);
            }
        }
    }
Ejemplo n.º 8
0
 public virtual void UpdateAbility(AbilityParameters parameters = null)
 {
     UpdateActivationRate();
 }
Ejemplo n.º 9
0
 public virtual void Execute(AbilityParameters parameters)
 {
 }