# How to Tween a Part 1 Stud Towards Another

G’day my fellow Devforum members.

Back at it with that AEwVS inspired game, I’m done with the math problem generator and now I’m on the AI of the teacher.

I want the teacher to move towards the player by 1 stud, simple as that but not simple enough for me to know how to do it. I’ve tried multiplying the target position by 1 but it won’t allow CFrames to be multiplied by numbers alone. I’ve also tried multiplying it by “CFrame.new(1,0,0)” but it just moves the teacher to the right of the player.

Here’s the code:

``````local closestPlayer = nil
local closestDistance = math.huge

wait(5)

repeat
wait(script.Parent:GetAttribute("WaitTime"))
--Getting Closest Player
for _, player in pairs(game.Players:GetPlayers()) do
local character = player.Character
local distance = (script.Parent.Position - character.HumanoidRootPart.Position).Magnitude

-- Check if current player is closer than the previous closest
if (not closestPlayer or distance < closestDistance) then
closestPlayer = player
closestDistance = distance
end
end

--Chase
local tween = game:GetService("TweenService"):Create(script.Parent, TweenInfo.new(script.Parent:GetAttribute("AttackTime"), Enum.EasingStyle.Linear), {CFrame = closestPlayer.Character.HumanoidRootPart.CFrame * CFrame.new(1 * script.Parent:GetAttribute("Speed"),0,0)}):Play()

--Use the information about the closest player (optional)
if closestPlayer then
print("Closest player:", closestPlayer.Name, "at distance:", closestDistance)
-- You can use closestPlayer and closestDistance for further actions
end

wait(script.Parent:GetAttribute("AttackTime"))

until false
``````

And here’s a picture:

Thank you!
*creepy teacher, i know.*

2 Likes

To have the teacher appear at the rear right of the player try doing something like this

``````local TeacherRoot: BasePart
local HumanoidRoot: BasePart

local Offset  = Vector3.new(3, 0, 5)

HumanoidRoot.CFrame:ToWorldSpace(CFrame.new(Offset))
``````

sets whatever the TeacherRoot is to be 3 studs to the right and 5 studs behind the HumanoidRoot

sorry for taking 15 hours to respond i slept
i think i misexplained it. i want the teacher to move 1 stud TO the player, not a couple stud behind them.
ex: if the teacher is 3 studs away from the player, he will move to be 2 studs away from the player, since he’s moving 1 stud to the player.
thank you and i’m sorry for explaining it badly

Simple as tweening the position of the teacher to `part1.position + (part2.position - part1.position).Unit`. Here’s the entire code:

``````local closestPlayer = nil
local closestDistance = math.huge

wait(5)

repeat
wait(script.Parent:GetAttribute("WaitTime"))
--Getting Closest Player
for _, player in pairs(game.Players:GetPlayers()) do
local character = player.Character
local distance = (script.Parent.Position - character.HumanoidRootPart.Position).Magnitude

-- Check if current player is closer than the previous closest
if (not closestPlayer or distance < closestDistance) then
closestPlayer = player
closestDistance = distance
end
end

--Chase
local targetPos = script.Parent.position + (closestPlayer.Character.HumanoidRootPart.position - script.Parent.position).Unit * script.Parent:GetAttribute("Speed")
local tween = game:GetService("TweenService"):Create(script.Parent, TweenInfo.new(script.Parent:GetAttribute("AttackTime"), Enum.EasingStyle.Linear), {Position = targetPos}):Play()

--Use the information about the closest player (optional)
if closestPlayer then
print("Closest player:", closestPlayer.Name, "at distance:", closestDistance)
-- You can use closestPlayer and closestDistance for further actions
end

wait(script.Parent:GetAttribute("AttackTime"))

until false
``````

only problem is that the teacher clips through walls

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.