Hey There!
So i was making an kind of “enemy” NPC that i want to walk away when the player gets closer and closer so basically get close to a certain distance.
And i cant quiet figure out how to achieve this.
I made the basics but not even the ANIMATE_FIGURE()
function seems to properly work
NOTICE
THIS IS NOT A REGULAR DUMMY IT IS A CHEST THEREFORE IT CANT USE
THE FUNCTIONS OF A NORMAL DUMMY NPC SCRIPT!!
THE WALKING AND RUNNING ANIMATIONS WORK BECOUSE I USE A CUSTOM RIG
SO I THOUGHT TO USE THE HUMANOIDROOT PARTS CFRAME TO MOVE IT FORWARD, LEFT, RIGHT ETC…
local STATE = 0
local FIGURE = script.Parent
local HUMANOID_ROOT_PART = FIGURE.HumanoidRootPart
local HUMANOID = FIGURE.Humanoid
local IDLE_ANIMATION = require(game:GetService('ReplicatedStorage').ANIMATIONS).CHEST_ANIMATIONS.IDLE
local WALKING_ANIMATION = require(game:GetService('ReplicatedStorage').ANIMATIONS).CHEST_ANIMATIONS.WALKING
local function LOAD_ANIMATION(ANIMATION_ID)
local ANIMATION = Instance.new("Animation")
ANIMATION.AnimationId = ANIMATION_ID
HUMANOID:LoadAnimation(ANIMATION):Play()
end
local function IDLE()
STATE = 1
LOAD_ANIMATION(IDLE_ANIMATION)
end
local function WALK()
STATE = 2
LOAD_ANIMATION(WALKING_ANIMATION)
end
local function CALCULATE_POSITION()
local CURRENT_CFRAME = HUMANOID_ROOT_PART.CFrame
local NEW_CFRAME = CURRENT_CFRAME * CFrame.new(Vector3.new(math.random(), 0, 0))
return NEW_CFRAME.Position
end
local function ANIMATE_FIGURE()
WALK()
while wait(0.1) do
if STATE == 2 then
local NEW_POSITION = CALCULATE_POSITION()
HUMANOID_ROOT_PART.CFrame = CFrame.new(NEW_POSITION)
wait(math.random(1, 15))
IDLE()
wait(math.random(1, 10))
WALK()
end
end
end
ANIMATE_FIGURE()