Thread: Velocity and Speed

1. Velocity and Speed

no one asked for this, but I hope someone can find this info useful

The velocity is the vector quantity that contains the magnitude (speed) and the direction of an Entity,
while the speed is the scalar quantity containing the magnitude of the velocity, measured in distance divided by time. (units/second)

As you know, every Entity has a .velocity vector, and from this vector we can extract the speed of an entity.

To get the velocity from a player, we simply use:
local.velocity = local.player.velocity; // assuming local.player is a Player Entity

Then, to get the speed we use the following formula (Pythagorean theorem):
local.speed = sqrt(pow local.velocity 2 + pow local.velocity 2);

This will return the player's speed relative to the X and Y axis (North, South, East and West) in units per second.
This can be used to get the walking/running speed of a player

If we want to convert the speed from units/s to a real life unit like feet/s or meters/s we can do the following:

local.unit["ft"] = 0.0625; // 1/16 = 0.0625
local.unit["mt"] = 0.01905; // (1/16) * 0.3048 = 0.01905
local.unit["cm"] = 1.905; // (1/16) * 30.48 = 1.905

local.ft_speed = local.speed * local.unit["ft"]; // feet/second
local.mt_speed = local.speed * local.unit["mt"]; // meters/second
local.cm_speed = local.speed * local.unit["cm"]; // centimeters/second

Now if for some reason we want to get the speed relative to the X, Y and Z axis (North, South, East, West, Up and Down)
we simply add the value of the Z axis in the velocity vector to the speed formula:

local.speed = sqrt(pow local.velocity 2 + pow local.velocity 2 + pow local.velocity 2);
// or alternatively
local.speed = vector_length local.player.velocity;

This can be used to show the speed of a flying Entity

A simple demo script
Spoiler: demo script

local.unit["ft"] = 0.0625; // 1/16
local.unit["mt"] = 0.01905; // (1/16) * 0.3048 = 0.01905
local.unit["cm"] = 1.905; // (1/16) * 30.48 = 1.905

// assuming local.player is a Player Entity
while (local.player) {
local.velocity = local.player.velocity;

local.speed = sqrt(pow local.velocity 2 + pow local.velocity 2);

local.ft_speed = local.speed * local.unit["ft"];
local.mt_speed = local.speed * local.unit["mt"];
local.cm_speed = local.speed * local.unit["cm"];

local.player iprint("");
local.player iprint("velocity: " + local.velocity);
local.player iprint("speed: " + string(int(local.speed)) + " u/s");
local.player iprint("speed: " + string(int(local.ft_speed)) + " ft/s");
local.player iprint("speed: " + string(int(local.mt_speed)) + " mt/s");
// local.player iprint("speed: " + string(int(local.cm_speed)) + " cm/s");
waitframe;
}

and how does it look in game  Reply With Quote

2. That's awesome man! Very nice share! Thank you!  Reply With Quote

3. This could really be useful, thanks, good work.  Reply With Quote Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•