Use manual move_to to account for move_to interpolation issues

This commit is contained in:
jordan4ibanez 2021-04-02 21:50:47 -04:00
parent 61e812e40a
commit 1cbd3a998d

View file

@ -106,8 +106,8 @@ minetest.register_globalstep(function(dtime)
object:get_luaentity().target = checkpos object:get_luaentity().target = checkpos
object:get_luaentity()._removed = true object:get_luaentity()._removed = true
object:set_velocity(vector.multiply(vector.subtract(checkpos, object:get_pos()), 10)) object:set_velocity({x=0,y=0,z=0})
object:set_acceleration(vector.multiply(vector.subtract(checkpos, object:get_pos()), 20)) object:set_acceleration({x=0,y=0,z=0})
end end
end end
end end
@ -278,8 +278,6 @@ function minetest.handle_node_drops(pos, drops, digger)
obj:get_luaentity().age = item_drop_settings.dug_buffer obj:get_luaentity().age = item_drop_settings.dug_buffer
obj:get_luaentity()._insta_collect = false obj:get_luaentity()._insta_collect = false
print(obj:get_luaentity().age)
end end
end end
end end
@ -518,16 +516,20 @@ minetest.register_entity(":__builtin:item", {
self.object:set_properties({ self.object:set_properties({
physical = false physical = false
}) })
self.object:set_velocity({x=0,y=0,z=0})
self.object:set_acceleration({x=0,y=0,z=0})
self.collection_age = self.collection_age + dtime self.collection_age = self.collection_age + dtime
if not self.target then if not self.target then
self.object:remove() self.object:remove()
else else
local pos = self.object:get_pos() local pos = self.object:get_pos()
self.object:set_acceleration(vector.multiply(vector.subtract(self.target, pos), 20)) self.object:move_to(vector.add(pos, vector.multiply(vector.subtract(self.target, pos), 0.5)))
self.object:set_velocity(vector.multiply(vector.subtract(self.target, pos), 10))
if self.collection_age >= 0.3 or vector.distance(pos, self.target) <= 0.08 then if self.collection_age >= 1 or vector.distance(pos, self.target) <= 0.06 then
self.object:remove() self.object:remove()
end end
end end