You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let coord = playerLayer.pointForCoordinate(13,1)
let point = playerLayer.coordinateForPoint(coord)
point != 13,1... (result is 13,2).
Why? => return CGPoint(x: floor(pixelX / tileWidth), y: floor(pixelY / tileHeight))
if the position is from 13,1 for example (216.0, -24.0) then the outcome from pixelY / tileHeight is 2.
Edit: Map is Orthogonal
Edit2: Fixed it with +tileHeight or -tileHeight the pixelY
The text was updated successfully, but these errors were encountered:
Looks like I need to rework the TiledLayerObject.coordinateForPoint method.
The reason for this is because of the difference in coordinate systems between SpriteKit and Tiled. Internally, the conversion between screen points & tile coordinate is happening in Tiled's coordinate space, and converted by the coordinateForPoint & pointForCoordinate methods.
If the point (in SpriteKit coordinate space) is (216.0, -24.0), the floor operation incorrectly returns 2 because floor(-24.0 / 16.0) returns -2 and floor(24.0 / 16.0) returns 1.
Modifying this code will give you the correct result:
open func coordinateForPoint(_ point: CGPoint) -> CGPoint {
let coordinate = screenToTileCoords(point.invertedY)
return floor(point: coordinate)
}
I'll run a few tests to make sure everything checks out, and push up a fix.
for now it works. thanks for the awesome framework!
Edit: invertedY is not good. if pixelY is 24 it would be -24 and we have the same problem again. if (pixelY < 0) {pixelY += 16} fixes my Problem
let coord = playerLayer.pointForCoordinate(13,1)
let point = playerLayer.coordinateForPoint(coord)
point != 13,1... (result is 13,2).
Why? => return CGPoint(x: floor(pixelX / tileWidth), y: floor(pixelY / tileHeight))
if the position is from 13,1 for example (216.0, -24.0) then the outcome from pixelY / tileHeight is 2.
Edit: Map is Orthogonal
Edit2: Fixed it with +tileHeight or -tileHeight the pixelY
The text was updated successfully, but these errors were encountered: