Calculating movement speed based on travel time + distance.
Howdy! o7A friend and I worked out a way to calculate how fast an event's or players movement speed needs to be if they need to walk from Tile A to Tile B over a set course of frames.
RPGMaker calculates moving 1 tile by the following formula:
Code:
2^(moveSpeed/256)
If your movespeed is x2 Slower (3), you will move 1 tile every 32 frames.
If your movespeed is Normal (4), you will move 1 tile every 16 frames.
If your movespeed is x2 Faster (5), you will move 1 tile every 8 frames.
But what if you want to move 1 tile every 24 frames? Simply using a script to set your movement speed to '3.5' won't cut it! You'll be a little faster than what you anticipated. You might have a sound effect that takes 3 seconds to play, and you want an event to move from Point A to Point B over the course of those 3 seconds exactly. The default movement speeds RPG Maker provides might be too quick or too slow, so there is an equation that will help you calculate this!
The formula is written in Excel and is:
Code:
=LOG((256*A2)/B2,2)
So, we have our Tile, Frame, and MoveSpeed equations.
Currently in the data, we want to move 1 tile, over 16 frames of time, which calculates our movespeed to '4' (Default RMMV move speed logic
)
It's important to note, that RPG Maker runs at 60 Frames Per Second (FPS). So if you want a character to walk for 2.00 seconds, your frame total will be 120FPS.
What if I want to move 5 tiles over the course of 240 frames? Let's input it and see!
There's our equation... But that is a LOT of decimal places! I recommend you use at most 3 decimals and round off the last digit.
The limitations of this are currently diagonals, but for regular tile walking, it should paint the picture!
Now that you have calculated and found out your movement speed, it's time to set the event or players movement speed!
For the following example, we will be using the code above, so we will let our event/player walk 5 tiles over 240 frames.
[*]We have our movement speed which is '2.415037499', we will cut this down to just '2.415'
[*]Open an event and add a 'Set Movement Route'
[*]Choose either a player or event. NOTE: The code will differ depending on if you choose a Player or an Event.
[*]For players, click 'Script...' and input this line of code: Code:
$gamePlayer._moveSpeed = X'X' is the value we calculated earlier.
[*]For events, click 'Script...' and input this line of code: Code:
$gameMap.event(this._eventId)._moveSpeed = X'X' is the value we calculated earlier.
If you have plugins or modifications that allow the player to walk on individual pixels, just multiply your desired tile walk distance by your set pixel distance!
Below I have a video demonstrating 3 different walk speeds, they all take 240 frames to complete and have varying distances!
https://www.youtube.com/embed/Dj2_l4QoYHQ
NOTE: The video states durations of 120 instead of 240, this is an editing mistake on my behalf.
I hope this information is useful to game devs that want to achieve such an effect, as I know I certainly did and I'm glad I can make some documentation on what I discovered!
Feel free to ask any questions on how this can be used or how to use it all together!
本贴来自国际rpgmaker官方论坛作者:YoBro处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/calculating-movement-speed-based-on-travel-time-distance.159756/
页:
[1]