public static float GetEdgeColliderAllowedMovementInto(PhysicsMove move)
 {
     if (move.dir == Dir4.down && !CanSkipPlatform(move.moving))
     {
         return(0);
     }
     return(move.collideDistance);
 }
        public void ForceMoveInto(RaycastHit2D hit, float moveAmount, Dir4 dir)
        {
            float             collideDistance = moveAmount - hit.distance;
            PhysicsCollidable moveable        = hit.collider.GetComponent <PhysicsCollidable>();

            if (moveable)
            {
                PhysicsMove physicsMove = new PhysicsMove(hit, collideDistance, dir, movement);
                moveable.OnMoveInto(physicsMove);
            }
        }
 public override float GetAllowedMoveInto(PhysicsMove move)
 {
     if (allowedMove != Vector2.zero && allowedMove[move.dir.Axis] != 0)
     {
         float allowedDistance = Mathf.Abs(allowedMove[move.dir.Axis]);
         return(Mathf.Min(move.collideDistance, allowedDistance));
     }
     if (isPlatform)
     {
         return(PlatformCollidableHelpers.GetEdgeColliderAllowedMovementInto(move));
     }
     return(0);
 }
        public float GetAllowedMoveInto(RaycastHit2D hit, float wantsToMove, Dir4 dir)
        {
            if (wantsToMove <= hit.distance && !TilemapHelpers.IsColliderTilemap(hit.collider))
            {
                return(wantsToMove);
            }
            float             allowedCollideDistance = 0;
            PhysicsCollidable moveable = hit.collider.GetComponent <PhysicsCollidable>();

            if (moveable)
            {
                float       collideDistance = wantsToMove - hit.distance;
                PhysicsMove physicsMove     = new PhysicsMove(hit, collideDistance, dir, movement);
                allowedCollideDistance = moveable.GetAllowedMoveInto(physicsMove);
            }
            float allowedDistance = allowedCollideDistance + hit.distance;

            return(Mathf.Clamp(allowedDistance, 0, wantsToMove));
        }
 public static float GetGridAllowedMovementInto(PhysicsMove move, PlatformEffector effector)
 {
     if (move.dir == Dir4.down)
     {
         float roundedPointY = Mathf.Round(move.hit.point.y * 100f) / 100f;
         bool  isTileCoord   = roundedPointY % 16f == 0;
         if (isTileCoord)
         {
             StandEffectable effectable = move.moving.GetComponent <StandEffectable>();
             if (effectable)
             {
                 effector.AddEffectable(effectable);
                 if (effectable.CanSkipPlatform())
                 {
                     return(move.collideDistance);
                 }
             }
             return(0);
         }
     }
     return(move.collideDistance);
 }
 public override void OnMoveInto(PhysicsMove move)
 {
 }
Exemplo n.º 7
0
 public override float GetAllowedMoveInto(PhysicsMove move) =>
 PlatformCollidableHelpers.GetGridAllowedMovementInto(move, effector);
Exemplo n.º 8
0
 public abstract void OnMoveInto(PhysicsMove move);
Exemplo n.º 9
0
 public abstract float GetAllowedMoveInto(PhysicsMove move);