示例#1
0
 private void GlideCancel()
 {
     Debug.Log("Cancel Glide");
     isGliding = false;
     if (aEntity.terminalVels.Contains(currentTerminal))
     {
         aEntity.terminalVels.Remove(currentTerminal);
     }
     currentTerminal = null;
 }
示例#2
0
    public override void Cancel()
    {
        base.Cancel();

        if (currentTerminal != null)
        {
            aEntity.terminalVels.Remove(currentTerminal);
            currentTerminal  = null;
            aEntity.lockFlip = false;
        }
    }
示例#3
0
 private void PGlide()
 {
     Debug.Log("Glide");
     isGliding = true;
     if (aEntity.terminalVels.Contains(currentTerminal))
     {
         aEntity.terminalVels.Remove(currentTerminal);
     }
     LivingEntity.TerminalVel term = new LivingEntity.TerminalVel(glideSpeed);
     currentTerminal = term;
     aEntity.terminalVels.Add(term);
 }
示例#4
0
 public override void AbilityUpdate()
 {
     base.AbilityUpdate();
     if (AbilityActivated)
     {
         if (lockOutTimer <= 0)
         {
             PWallJumpSensor();
         }
     }
     else
     {
         if (currentTerminal != null)
         {
             if (currentTerminal != null)
             {
                 aEntity.terminalVels.Remove(currentTerminal);
                 currentTerminal = null;
             }
         }
     }
 }
示例#5
0
    private void PWallJumpSensor()
    {
        float   rayLength      = aEntity.entityBC2D.size.x / 2 + wallJumpRayLength;
        Vector2 wallJumpRayDir = Vector2.right;

        if (!aEntity.isLookingRight)
        {
            wallJumpRayDir = Vector2.left;
        }
        if (!aEntity.IsGrounded)
        {
            Vector3 topOrigin = new Vector3(sensorPosition.position.x, sensorPosition.position.y + sensorGap, sensorPosition.position.z);
            Vector3 botOrigin = new Vector3(sensorPosition.position.x, sensorPosition.position.y - sensorGap, sensorPosition.position.z);

            bool topRight = Physics2D.Raycast(topOrigin, Vector2.right, rayLength, wallJumpMask);
            bool botRight = Physics2D.Raycast(botOrigin, Vector2.right, rayLength, wallJumpMask);

            bool topLeft  = Physics2D.Raycast(topOrigin, Vector2.left, rayLength, wallJumpMask);
            bool botLeft  = Physics2D.Raycast(botOrigin, Vector2.left, rayLength, wallJumpMask);
            bool isOnWall = false;

            if (topRight || botRight || topLeft || botLeft)
            {
                if (aEntity.isLookingRight && (topRight || botRight))
                {
                    if (aEntity.EntityFlip())
                    {
                        aEntity.lockFlip = true;
                    }
                }
                if (!aEntity.isLookingRight && (topLeft || botLeft))
                {
                    if (aEntity.EntityFlip())
                    {
                        aEntity.lockFlip = true;
                    }
                }

                isOnWall = true;
            }

            if (isOnWall)
            {
                onWallCling?.Invoke();

                /*
                 * if (!CanCast)
                 * {
                 *  onWallCling?.Invoke();
                 * }
                 */

                CanActivate = true;

                if (currentTerminal == null)
                {
                    aEntity.terminalVels.Remove(currentTerminal);
                    LivingEntity.TerminalVel term = new LivingEntity.TerminalVel(wallFallSpeed);
                    currentTerminal = term;
                    aEntity.terminalVels.Add(term);
                }
            }
            else
            {
                CanActivate      = false;
                aEntity.lockFlip = false;

                if (currentTerminal != null)
                {
                    aEntity.terminalVels.Remove(currentTerminal);
                    currentTerminal = null;
                }
            }
        }
        else
        {
            CanActivate      = false;
            aEntity.lockFlip = false;

            if (currentTerminal != null)
            {
                aEntity.terminalVels.Remove(currentTerminal);
                currentTerminal = null;
            }
        }
        Debug.DrawRay(new Vector3(sensorPosition.position.x, sensorPosition.position.y + sensorGap, sensorPosition.position.z), wallJumpRayDir * rayLength, Color.cyan);
        Debug.DrawRay(new Vector3(sensorPosition.position.x, sensorPosition.position.y - sensorGap, sensorPosition.position.z), wallJumpRayDir * rayLength, Color.cyan);
        Debug.DrawRay(new Vector3(sensorPosition.position.x, sensorPosition.position.y + sensorGap, sensorPosition.position.z), -wallJumpRayDir * rayLength, Color.cyan);
        Debug.DrawRay(new Vector3(sensorPosition.position.x, sensorPosition.position.y - sensorGap, sensorPosition.position.z), -wallJumpRayDir * rayLength, Color.cyan);
    }