Chief Posted July 16, 2016 Share Posted July 16, 2016 So, I made a tile-based system, but it has a bunch of bugs, all due to timing, like if you mash directions or some other funk stuff. I figured maybe you guys could help me understand the logic for how I should be doing it.  Right now, these are the steps that my code goes through:  If moving, go forward a pixel amount If no longer moving, find the next tile in the player's direction Stop on the next tile, which is the player's destination  It seems like it should be that simple, but this is the first time I'm trying to make tile-based movement. Right now, it's pixel-based movement until you stop, at which time it will calculate your destination tile. Make sense?  How would I do this properly? Link to comment Share on other sites More sharing options...
panda Posted July 16, 2016 Share Posted July 16, 2016 This is just me sucking at helping without visuals but is there any way you can create a gif/clip of what's going on in your program? The visual aid might give me some clues as to what might not be working. Link to comment Share on other sites More sharing options...
Phenomenal Posted July 16, 2016 Share Posted July 16, 2016 well the code suggested here uses both coordinates and tiles as reference and it should find the next tile when the player moves and then the player should move and yeah as panda said visual aid would be nice Link to comment Share on other sites More sharing options...
Kibbelz Posted July 16, 2016 Share Posted July 16, 2016 Here is the pseudo code explaining how to set up the keyboard input handler for tile based movement:  if Arrow key pressed then if not already moving then destination = calculation of current position + direction if destination is not blocked then player location = destination player moving = true if direction = up then YOffset = -tileheight / 2 if direction = down then YOffset = tileheight / 2 if direction = left then XOffset = -tilewidth / 2 if direction = right then XOffset = tilewidth / 2  All you then have to do is update the YOffset and XOffset over time based on the time it takes the player to walk the tile width / 2 pixels. When both offsets are 0 you've stopped moving and can set player moving to false. When drawing the character on the screen, make sure to add these pixel offsets to the player.  I'm not the best at explaining things in English but I hope the pseudo code I gave you should be sufficient. Any queries feel free to ask. jcsnider and Chief 2 Link to comment Share on other sites More sharing options...
Chief Posted July 17, 2016 Author Share Posted July 17, 2016 This helped a ton; I got tile-based movement back in, but now I somehow messed up my camera with it, so I have another bug to squash. Link to comment Share on other sites More sharing options...
Kibbelz Posted July 17, 2016 Share Posted July 17, 2016 No problem, best of luck fixing your camera bug. jcsnider 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now