Code: Select all
local yaw = clicker:get_look_horizontal()
self.object:set_yaw(yaw) --the mob has to runaway in the same way that the clicker
self.object:set_velocity( ????? )
Code: Select all
local yaw = clicker:get_look_horizontal()
self.object:set_yaw(yaw) --the mob has to runaway in the same way that the clicker
self.object:set_velocity( ????? )
Code: Select all
lookat=function(self,pos2)
local pos1=self.object:get_pos()
local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z}
local yaw = math.atan(vec.z/vec.x)-math.pi/2
if pos1.x >= pos2.x then yaw = yaw+math.pi end
self.object:set_yaw(yaw)
end
walk=function(self,speed)
local yaw = self.object:get_yaw()
local speed = speed or 1
local x = math.sin(yaw) * -1
local z = math.cos(yaw) * 1
local y = self.object:get_velocity().y
self.object:set_velocity({
x = x*speed,
y = y,
z = z*speed
})
return self
end
run_away=function(self,pos)
lookat(self,pos)
self.object:get_yaw()
self.object:set_yaw(yaw+math.pi)
walk(self,2)
end
Wow, thanks!!! It works like a charm!!!AiTechEye wrote:Code: Select all
lookat=function(self,pos2) local pos1=self.object:get_pos() local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z} local yaw = math.atan(vec.z/vec.x)-math.pi/2 if pos1.x >= pos2.x then yaw = yaw+math.pi end self.object:set_yaw(yaw) end walk=function(self,speed) local yaw = self.object:get_yaw() local speed = speed or 1 local x = math.sin(yaw) * -1 local z = math.cos(yaw) * 1 local y = self.object:get_velocity().y self.object:set_velocity({ x = x*speed, y = y, z = z*speed }) return self end run_away=function(self,pos) lookat(self,pos) self.object:get_yaw() self.object:set_yaw(yaw+math.pi) walk(self,2) end
Thanks.Termos wrote:????? = vector.multiply(minetest.yaw_to_dir(yaw),speed)
Code: Select all
-- entity definition .....
automatic_face_movement_dir = 0,
automatic_face_movement_max_rotation_per_sec = 100,
Users browsing this forum: No registered users and 1 guest