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) { }
public override float GetAllowedMoveInto(PhysicsMove move) => PlatformCollidableHelpers.GetGridAllowedMovementInto(move, effector);
public abstract void OnMoveInto(PhysicsMove move);
public abstract float GetAllowedMoveInto(PhysicsMove move);