การเขียน Lua Script ใน Roblox Studio เพื่อให้ NPC หันหน้ามาทางผู้เล่น

ใน Roblox Studio เราสามารถเขียนสคริปต์ Lua เพื่อให้ NPC หันหน้ามาทางผู้เล่นโดยใช้คุณสมบัติของ CFrame และ LookVector ที่ช่วยในการกำหนดทิศทางการหมุนของตัวละคร NPC ได้ง่าย ๆ

ขั้นตอนการสร้าง Script

  1. เพิ่ม NPC

    • สร้าง NPC (ตัวละคร) ในเกมของคุณ โดยการเพิ่มโมเดลและตั้งชื่อ เช่น "NPC"
    • ตรวจสอบให้แน่ใจว่าโมเดลของ NPC มี HumanoidRootPart ซึ่งเป็นส่วนหลักที่ใช้สำหรับการเคลื่อนย้าย
  2. เพิ่ม LocalScript หรือ Script

    • คลิกขวาที่ NPC > เพิ่ม Script เพื่อเขียนโค้ดที่ควบคุม NPC
  3. เขียนโค้ด
    ด้านล่างนี้คือตัวอย่างโค้ดที่ NPC จะหันหน้าไปทางผู้เล่นที่ใกล้ที่สุด:

local npc = script.Parent -- อ้างถึงโมเดล NPC
local rootPart = npc:WaitForChild("HumanoidRootPart") -- หา HumanoidRootPart ของ NPC
local players = game:GetService("Players") -- เรียกใช้ Players service

local function getClosestPlayer()
    local closestPlayer = nil
    local shortestDistance = math.huge -- กำหนดระยะเริ่มต้นให้ไกลสุด
    for _, player in pairs(players:GetPlayers()) do
        if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
            local playerRoot = player.Character.HumanoidRootPart
            local distance = (playerRoot.Position - rootPart.Position).Magnitude
            if distance < shortestDistance then
                shortestDistance = distance
                closestPlayer = player
            end
        end
    end
    return closestPlayer
end

while true do
    local closestPlayer = getClosestPlayer()
    if closestPlayer and closestPlayer.Character then
        local playerRoot = closestPlayer.Character.HumanoidRootPart
        rootPart.CFrame = CFrame.new(rootPart.Position, playerRoot.Position)
    end
    wait(0.1) -- รอเวลาสั้น ๆ เพื่อป้องกันการประมวลผลหนักเกินไป
end

อธิบายโค้ด

  1. ฟังก์ชัน getClosestPlayer
    • ใช้ค้นหาผู้เล่นที่อยู่ใกล้ NPC มากที่สุด โดยใช้ระยะทาง (Magnitude)
  2. การหมุน NPC
    • ใช้ CFrame.new(Position1, Position2) เพื่อหมุน HumanoidRootPart ของ NPC ให้หันไปทางตำแหน่งของผู้เล่น
  3. การวนลูป
    • ใช้ลูป while เพื่ออัปเดตทิศทางของ NPC ตลอดเวลา

การปรับแต่งเพิ่มเติม

  • กำหนดระยะหันมอง
    สามารถเพิ่มเงื่อนไขระยะ เช่น:

    if distance < 20 then -- กำหนดให้ NPC หันเฉพาะผู้เล่นที่อยู่ในระยะ 20 หน่วย
    
  • เพิ่ม Animation
    คุณสามารถเพิ่มแอนิเมชันให้กับ NPC เมื่อหันหน้าได้ โดยการใช้ AnimationController

การทดสอบ

  • เมื่อเขียนโค้ดเสร็จ ให้กดปุ่ม Play เพื่อดูผลลัพธ์ว่า NPC หันหน้าตรงมาทางผู้เล่นหรือไม่

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

จากสมศรี 422R สู่หุ่นยนต๋ในยุค llm