การใช้งาน Vector และ CFrame ใน Lua บน Roblox Studio 

การพัฒนาเกมใน Roblox Studio จำเป็นต้องเข้าใจการทำงานของ Vector และ CFrame เนื่องจากเป็นเครื่องมือสำคัญที่ช่วยจัดการตำแหน่ง ทิศทาง และการเคลื่อนไหวของวัตถุต่างๆ ในโลก 3 มิติ บทความนี้จะแนะนำวิธีการใช้งาน Vector และ CFrame ด้วย Lua พร้อมตัวอย่างที่เข้าใจง่าย


1. Vector คืออะไร?

Vector เป็นข้อมูลชนิดหนึ่งที่ใช้แสดงค่าตำแหน่งหรือทิศทางในพื้นที่ 3 มิติในรูปแบบของสามแกน (x, y, z) ใน Roblox Studio คุณสามารถใช้งาน Vector3 เพื่อจัดการตำแหน่งในโลกของเกม

ตัวอย่างการสร้าง Vector3

local position = Vector3.new(10, 20, 30) -- สร้างตำแหน่งที่มีค่า x=10, y=20, z=30
print(position)

การคำนวณระหว่าง Vectors

  • การบวกและลบ:

    local vectorA = Vector3.new(5, 5, 5)
    local vectorB = Vector3.new(2, 3, 4)
    local result = vectorA + vectorB -- ผลลัพธ์คือ (7, 8, 9)
    print(result)
    
  • การหารและคูณด้วยตัวเลข:

    local scaledVector = vectorA * 2 -- ผลลัพธ์คือ (10, 10, 10)
    print(scaledVector)
    
  • การคำนวณขนาดของ Vector:

    local magnitude = vectorA.Magnitude
    print("ความยาวของ Vector: " .. magnitude)
    

2. CFrame คืออะไร?

CFrame (Coordinate Frame) ใช้สำหรับแสดงตำแหน่งและการหมุนของวัตถุในโลก 3 มิติ ซึ่งมีความสามารถมากกว่า Vector3 เพราะสามารถกำหนดการหมุนได้ในตัวเดียว

การสร้าง CFrame

local cframePosition = CFrame.new(0, 10, 0) -- กำหนดตำแหน่ง (0, 10, 0)
print(cframePosition)

การหมุนด้วย CFrame

  • การหมุนวัตถุโดยใช้มุม Euler:

    local rotatedCFrame = CFrame.Angles(math.rad(90), math.rad(0), math.rad(45)) -- หมุน 90 องศาบนแกน x และ 45 องศาบนแกน z
    print(rotatedCFrame)
    
  • การหมุนและเลื่อนพร้อมกัน:

    local combinedCFrame = CFrame.new(10, 10, 10) * CFrame.Angles(0, math.rad(90), 0) -- ย้ายตำแหน่งและหมุน
    print(combinedCFrame)
    

การแปลงตำแหน่งจาก CFrame เป็น Vector3

local position = combinedCFrame.Position
print("ตำแหน่ง: " .. tostring(position))

3. ตัวอย่างการใช้งาน Vector และ CFrame

การเคลื่อนย้ายวัตถุ

local part = Instance.new("Part")
part.Position = Vector3.new(0, 5, 0) -- ย้ายตำแหน่งด้วย Vector3
part.Anchored = true
part.Parent = workspace

การหมุนวัตถุ

local part = Instance.new("Part")
part.CFrame = CFrame.new(0, 5, 0) * CFrame.Angles(0, math.rad(45), 0) -- ย้ายและหมุนพร้อมกัน
part.Anchored = true
part.Parent = workspace

การเคลื่อนไหวอย่างต่อเนื่อง

local part = Instance.new("Part")
part.Position = Vector3.new(0, 5, 0)
part.Anchored = true
part.Parent = workspace

while true do
    wait(0.1)
    part.CFrame = part.CFrame * CFrame.new(0, 0, -1) -- เคลื่อนที่ไปข้างหน้า
end

4. สรุป

Vector และ CFrame เป็นพื้นฐานที่สำคัญใน Roblox Studio โดย Vector เหมาะสำหรับจัดการตำแหน่งและทิศทางอย่างง่าย ส่วน CFrame มีความยืดหยุ่นมากกว่าเมื่อใช้งานร่วมกับการหมุน การเข้าใจและใช้งานทั้งสองอย่างนี้อย่างถูกต้องจะช่วยให้คุณสร้างเกมที่ซับซ้อนและน่าสนใจได้มากขึ้น

ความคิดเห็น

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

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