Fix crash, Change anim timing

This commit is contained in:
ElCeejo 2022-05-16 19:15:11 -07:00 committed by GitHub
parent b8178480c7
commit a4804fc465
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -215,12 +215,12 @@ creatura.register_movement_method("creatura:pathfind", function(self, pos2)
-- Moving -- Moving
self:set_gravity(-9.8) self:set_gravity(-9.8)
if yaw_diff < pi * (turn_rate * 0.1) then if yaw_diff < pi * (turn_rate * 0.1) then
self:animate(movement_data.anim or "walk")
self:set_forward_velocity(speed) self:set_forward_velocity(speed)
else else
self:set_forward_velocity(speed * 0.5) self:set_forward_velocity(speed * 0.5)
turn_rate = turn_rate * 1.5 turn_rate = turn_rate * 1.5
end end
self:animate(movement_data.anim or "walk")
self:turn_to(tgt_yaw, turn_rate) self:turn_to(tgt_yaw, turn_rate)
if self:pos_in_box(pos2) if self:pos_in_box(pos2)
or (waypoint or (waypoint
@ -262,12 +262,12 @@ creatura.register_movement_method("creatura:theta_pathfind", function(self, pos2
-- Moving -- Moving
self:set_gravity(-9.8) self:set_gravity(-9.8)
if yaw_diff < pi * (turn_rate * 0.1) then if yaw_diff < pi * (turn_rate * 0.1) then
self:animate(movement_data.anim or "walk")
self:set_forward_velocity(speed) self:set_forward_velocity(speed)
else else
self:set_forward_velocity(speed * 0.5) self:set_forward_velocity(speed * 0.5)
turn_rate = turn_rate * 1.5 turn_rate = turn_rate * 1.5
end end
self:animate(movement_data.anim or "walk")
self:turn_to(tgt_yaw, turn_rate) self:turn_to(tgt_yaw, turn_rate)
if self:pos_in_box(pos2) if self:pos_in_box(pos2)
or (waypoint or (waypoint
@ -302,12 +302,12 @@ creatura.register_movement_method("creatura:neighbors", function(self, pos2)
-- Moving -- Moving
self:set_gravity(-9.8) self:set_gravity(-9.8)
if yaw_diff < pi * 0.25 then if yaw_diff < pi * 0.25 then
self:animate(movement_data.anim or "walk")
self:set_forward_velocity(speed) self:set_forward_velocity(speed)
else else
self:set_forward_velocity(speed * 0.5) self:set_forward_velocity(speed * 0.5)
turn_rate = turn_rate * 1.5 turn_rate = turn_rate * 1.5
end end
self:animate(movement_data.anim or "walk")
self:turn_to(tgt_yaw, turn_rate) self:turn_to(tgt_yaw, turn_rate)
if self:pos_in_box(pos2) if self:pos_in_box(pos2)
or (waypoint or (waypoint
@ -325,20 +325,20 @@ local function get_obstacle_avoidance(self, goal)
pos.y = pos.y + 1 pos.y = pos.y + 1
local yaw2goal = dir2yaw(vec_dir(pos, goal)) local yaw2goal = dir2yaw(vec_dir(pos, goal))
local outset = vec_add(pos, vec_multi(yaw2dir(yaw2goal), width)) local outset = vec_add(pos, vec_multi(yaw2dir(yaw2goal), width))
local collide, col_pos = get_collision(self, outset, yaw2goal) local collide, col_pos = get_collision(self, yaw2goal)
local avd_pos local avd_pos
if collide then if collide then
for i = 45, 180, 45 do for i = 45, 180, 45 do
angle = rad(i) angle = rad(i)
dir = vec_multi(yaw2dir(yaw2goal + angle), width) dir = vec_multi(yaw2dir(yaw2goal + angle), width)
avd_pos = vec_center(vec_add(pos, dir)) avd_pos = vec_center(vec_add(pos, dir))
if not get_collision(self, avd_pos, yaw2goal) then if not get_collision(self, yaw2goal) then
break break
end end
angle = -rad(i) angle = -rad(i)
dir = vec_multi(yaw2dir(yaw2goal + angle), width) dir = vec_multi(yaw2dir(yaw2goal + angle), width)
avd_pos = vec_center(vec_add(pos, dir)) avd_pos = vec_center(vec_add(pos, dir))
if not get_collision(self, avd_pos, yaw2goal) then if not get_collision(self, yaw2goal) then
break break
end end
end end
@ -375,12 +375,12 @@ creatura.register_movement_method("creatura:obstacle_avoidance", function(self,
-- Moving -- Moving
self:set_gravity(-9.8) self:set_gravity(-9.8)
if yaw_diff < pi * 0.25 then if yaw_diff < pi * 0.25 then
self:animate(movement_data.anim or "walk")
self:set_forward_velocity(speed) self:set_forward_velocity(speed)
else else
self:set_forward_velocity(speed * 0.5) self:set_forward_velocity(speed * 0.5)
turn_rate = turn_rate * 1.5 turn_rate = turn_rate * 1.5
end end
self:animate(movement_data.anim or "walk")
self:turn_to(tgt_yaw, turn_rate) self:turn_to(tgt_yaw, turn_rate)
if self:pos_in_box(pos2) if self:pos_in_box(pos2)
or (waypoint or (waypoint