From b41508c8dd7e3b255f857141ae0a402227c8eab5 Mon Sep 17 00:00:00 2001 From: ElCeejo Date: Fri, 12 Aug 2022 23:24:39 -0700 Subject: [PATCH] Improved Velocity Handling --- mob_meta.lua | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/mob_meta.lua b/mob_meta.lua index 827f856..21bf325 100644 --- a/mob_meta.lua +++ b/mob_meta.lua @@ -192,22 +192,37 @@ end -- Sets Velocity to desired speed in mobs current look direction function mob:set_forward_velocity(speed) - self._movement_data.horz_vel = speed + if self.step_delay then + self._movement_data.horz_vel = speed + else + local yaw = self.object:get_yaw() + local vel = self.object:get_velocity() + vel.x = sin(yaw) * -speed + vel.z = cos(yaw) * speed + self.object:set_velocity(vel) + end end -- Sets Velocity on y axis function mob:set_vertical_velocity(speed) - self._movement_data.vert_vel = speed + if self.step_delay then + self._movement_data.vert_vel = speed + else + local vel = self.object:get_velocity() + vel.y = speed + self.object:set_velocity(vel) + end end function mob:do_velocity() + if not self.step_delay then return end local data = self._movement_data or {} local vel = self.object:get_velocity() local yaw = self.object:get_yaw() if not yaw then return end - local horz_vel = data.horz_vel or (data.gravity == 0 and 0) - local vert_vel = data.vert_vel or (data.gravity == 0 and 0) + local horz_vel = data.horz_vel or (data.gravity >= 0 and 0) + local vert_vel = data.vert_vel or (data.gravity >= 0 and 0) vel.x = (horz_vel and (sin(yaw) * -horz_vel)) or vel.x vel.y = vert_vel or vel.y vel.z = (horz_vel and (cos(yaw) * horz_vel)) or vel.z