fix wheelspeed and backwards sounds

This commit is contained in:
Elkien3 2020-09-08 09:42:12 -05:00
parent 28d3eec210
commit 32a8aeb5d5
2 changed files with 23 additions and 13 deletions

View File

@ -163,7 +163,6 @@ end
function biker.wheelspeed(bike) function biker.wheelspeed(bike)
--if true then return end --if true then return end
if not bike then return end if not bike then return end
if not bike.wheels then return end
if not bike.object then return end if not bike.object then return end
if not bike.object:getvelocity() then return end if not bike.object:getvelocity() then return end
local direction = 1 local direction = 1
@ -325,12 +324,6 @@ function biker.drive(entity, dtime)
entity.wheelie = repair(angleLerp(k, 0 ,0.1)) entity.wheelie = repair(angleLerp(k, 0 ,0.1))
entity.object:set_rotation({x=entity.wheelie, y=newrot, z=repair(l,3)}) entity.object:set_rotation({x=entity.wheelie, y=newrot, z=repair(l,3)})
end end
if math.abs(entity.v) < .05 and math.abs(entity.v) > 0 then
biker.wheelspeed(entity)
end
if entity.lastv and vector.length(entity.lastv) == 0 and math.abs(entity.v) > 0 then
biker.wheelspeed(entity)
end
if not ctrl.sneak then if not ctrl.sneak then
local s = get_sign(entity.v) local s = get_sign(entity.v)
entity.v = entity.v - 0.04 * s entity.v = entity.v - 0.04 * s
@ -390,6 +383,20 @@ function biker.drive(entity, dtime)
entity.object:setvelocity(new_velo) entity.object:setvelocity(new_velo)
entity.object:setacceleration(new_acce) entity.object:setacceleration(new_acce)
if entity.lastv and vector.length(entity.lastv) > 0 and math.abs(entity.v) == 0 then
biker.wheelspeed(entity)
if entity.wheelsound then
minetest.sound_fade(entity.wheelsound, 30, 0)
end
if entity.windsound then
minetest.sound_fade(entity.windsound, 30, 0)
end
end
if entity.lastv and vector.length(entity.lastv) == 0 and math.abs(entity.v) > 0 then
biker.wheelspeed(entity)
end
entity.lastv = entity.object:getvelocity() entity.lastv = entity.object:getvelocity()
--sound --sound
@ -413,14 +420,15 @@ function biker.drive(entity, dtime)
end end
end end
entity.timer2 = entity.timer2 + dtime entity.timer2 = entity.timer2 + dtime
if entity.timer2 > 1.5-entity.v/max_spd*1.1 then local abs_v = math.abs(entity.v)
if math.abs(entity.v) > .2 then if entity.timer2 > 1.5-abs_v/max_spd*1.1 then
if abs_v > .2 then
if math.abs(velo.y) < .1 then if math.abs(velo.y) < .1 then
entity.wheelsound = minetest.sound_play("tyresound", { entity.wheelsound = minetest.sound_play("tyresound", {
max_hear_distance = 48, max_hear_distance = 48,
object = entity.object, object = entity.object,
pitch = 1.1 + (entity.v/max_spd)*.6, pitch = 1.1 + (abs_v/max_spd)*.6,
gain = .5 + (entity.v/max_spd)*2 gain = .5 + (abs_v/max_spd)*2
}) })
elseif entity.windsound then elseif entity.windsound then
minetest.sound_fade(entity.windsound, 30, 0) minetest.sound_fade(entity.windsound, 30, 0)
@ -428,8 +436,8 @@ function biker.drive(entity, dtime)
entity.windsound = minetest.sound_play("wind", { entity.windsound = minetest.sound_play("wind", {
max_hear_distance = 10, max_hear_distance = 10,
object = entity.object, object = entity.object,
pitch = 1 + (entity.v/max_spd)*.6, pitch = 1 + (abs_v/max_spd)*.6,
gain = 0 + (entity.v/max_spd)*4 gain = 0 + (abs_v/max_spd)*4
}) })
end end
entity.timer2 = 0 entity.timer2 = 0

View File

@ -33,6 +33,8 @@ for id, colour in pairs (bikelist) do
self.platenumber = staticdata self.platenumber = staticdata
end end
end end
if not self.timer1 then self.timer1 = 0 end
if not self.timer2 then self.timer2 = 0 end
local pos = self.object:get_pos() local pos = self.object:get_pos()
self.object:set_armor_groups({fleshy=0, immortal=1}) self.object:set_armor_groups({fleshy=0, immortal=1})
if biker.signs then if biker.signs then