What I’m trying to do is fire an event or a function every time the character moves .2 studs. Any solutions
Couldn’t you just use a
GetPropertyChangedSignal on the character’s root part’s position?
character.HumanoidRootPart:GetPropertyChangedSignal("Position"):Connect(function() -- do stuff end)
Just tried that, doesn’t work…
You can use the MoveDirection property of the Humanoid and use GetPropertyChangedSignal.
Please follow the guidelines for this category and restructure your post accordingly. Your post should contain a description of your use-case so we can better answer your question, it is currently too broad, and perhaps we can respond with a better solution if we know what you are trying to achieve in the wider scheme of things.
Try for a solution of using
local lastPos Humanoid.Running:Connect(function() if not lastPos then lastPos = character.HumanoidRootPart.Position end if (character.HumanoidRootPart.Position - lastPos).Magnitude > 0.2 then -- do something lastPos = character.HumanoidRootPart.Position end end)
Oh man, no Studio access really sucks.
Post is very vague of what you are trying to achieve here.
I just tried a new method, though it will only work on changes from the humanoid and not environmental changes:
local RunService = game:GetService("RunService") local char = script.Parent local noid = char:WaitForChild("Humanoid") local speed = 0 noid.Running:Connect(function(spd) speed = spd end) local i = 0 RunService.Heartbeat:Connect(function(dt) i = i + dt * speed if i > 0.2 then print("over 0.2") i = 0 end end)
You could probably also just use magnitude checks every heartbeat:
local RunService = game:GetService("RunService") local char = script.Parent local root = char:WaitForChild("HumanoidRootPart") local lastPos = root.Position RunService.Heartbeat:Connect(function() local newPos = root.Position if (newPos - lastPos).Magnitude > 0.2 then print("over 0.2") lastPos = newPos end end)
@Operatik, the Running event only fires when the speed of the humanoid changes, not every frame that the humanoid is moving, which means you can technically run for a very long time after reaching the 0.2 stud mark with that method. Sorry if that was blatant
I just figured out that
Running event only runs once and perhaps the checking using
RunService actually works. Simply alternate the event as according if the
Running event does not work.
sry if it was to vague and thx for the help