more reasonable values

This commit is contained in:
Sumyjkl 2022-08-01 20:51:08 +10:00
parent 177cf231b6
commit 832b0afdd6
1 changed files with 11 additions and 8 deletions

View File

@ -282,26 +282,29 @@ minetest.register_globalstep(function(dtime)
if elytra.active then if elytra.active then
mcl_player.player_set_animation(player, "fly") mcl_player.player_set_animation(player, "fly")
local slowdown_mult = 0.7 -- amount of vel to take local slowdown_mult = 0.2 -- amount of vel to take
local max_speed = 1000 local speedup_mult = 10 -- amount of speed to add based on look dir
local max_speed = 60
local direction = player:get_look_dir() local direction = player:get_look_dir()
local v = player:get_velocity() local v = player:get_velocity()
local speed_mult = clamp(elytra.speed - direction.y * 30 * dtime, -max_speed, max_speed) local direction_mult = clamp(direction.y*2, -0.5, 0.5)
local speed_mult = clamp(elytra.speed - direction_mult * speedup_mult * dtime, -max_speed, max_speed)
speed_mult = speed_mult - slowdown_mult * speed_mult * dtime -- slow down speed_mult = speed_mult - slowdown_mult * speed_mult * dtime -- slow down
speed_mult = math.max(speed_mult, -1) speed_mult = math.max(speed_mult, -1)
speed_mult = math.min(speed_mult, max_speed)
elytra.speed = speed_mult elytra.speed = speed_mult
vel = direction vel = direction
vel = vector.multiply(vel, speed_mult) vel = vector.multiply(vel, speed_mult)
-- vel = { vel = {
-- x = clamp(vel.x, -max_speed, max_speed), x = clamp(vel.x, -max_speed, max_speed),
-- y = clamp(vel.y, -max_speed, max_speed), y = clamp(vel.y, -max_speed, max_speed),
-- z = clamp(vel.z, -max_speed, max_speed)} z = clamp(vel.z, -max_speed, max_speed)}
-- slow the player down so less spongy movement by applying half the inverse vel -- slow the player down so less spongy movement by applying half the inverse vel
-- NOTE: do not set this higher than about 0.7 or the game will get the wrong vel and it will be broken -- NOTE: do not set this higher than about 0.7 or the game will get the wrong vel and it will be broken
v = vector.multiply(v, -0.3) v = vector.multiply(v, -0.3)
player:add_velocity(v) player:add_velocity(v)
vel.y = vel.y - (100 / math.max(speed_mult, 1)) * dtime vel.y = vel.y - (100 / math.max(speed_mult, 2)) * dtime
player:add_velocity(vel) player:add_velocity(vel)
playerphysics.add_physics_factor(player, "gravity", "mcl_playerplus:elytra", 0.1) playerphysics.add_physics_factor(player, "gravity", "mcl_playerplus:elytra", 0.1)