@Override
	public boolean isCollidingWith(Collidable c) {
		if (!super.isCollidingWith(c)) {
			return false;
		}
		Rectangle2D thisRect = this.getLogicalBounds();
		Rectangle2D cRect = c.getLogicalBounds();
		int outCode = thisRect.outcode(new Point2D.Double(cRect.getCenterX(),
				cRect.getCenterY()));
		if (direction == Direction.UP) {
			if (outCode == (Rectangle2D.OUT_TOP))
				return true;
		} else if (direction == Direction.RIGHT) {
			if (outCode == (Rectangle2D.OUT_RIGHT))
				return true;
		} else if (direction == Direction.DOWN) {
			if (outCode == (Rectangle2D.OUT_BOTTOM))
				return true;
		} else if (direction == Direction.LEFT) {
			if (outCode == (Rectangle2D.OUT_LEFT))
				return true;
		}
		return false;
	}