การวิจารณ์แสดงผล

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ผู้เล่นสามารถรับข้อเสนอแนะว่าการกระทําของพวกเขากําลังทําอะไรบางอย่างด้วยอนิเมชันหรือไม่ นี่อาจเป็นการเขย่าต้นไม้เมื่อถูกกด หรือสัตว์เลี้ยงที่กระโดดอย่างมีความสุขเมื่

ทวีนินงกับอนิเมชัน

วิธีหนึ่งในการอนิเมชันวัตถุคือการใช้วัยรุ่น วัยรุ่น tween คือกระบวนการเปลี่ยนค่าเริ่มต้นเป็นค่าสิ้นสุดในระยะเวลาที่กำหนด วัยรุ่นสามารถใช้เพื่อเปลี่ยนสมบัติ

การตั้งค่าโครงการ

สำหรับโครงการนี้, เทวน์จะย้ายวัตถุจากตำแหน่งเริ่มต้นไปยังตำแหน่งเป้าหมาย

  1. กำหนดส่วนที่คุณจะแอนิเมชัน ในตัวอย่างด้านล่างนี้, 1 คือปุ่ม, และ 2 คือผนัง

  2. ในส่วนที่จะเคลื่อนที่ เพิ่ม ClickDetector และสคริปต์ที่มีชื่อว่า TweenMove อย่าเปลี่ยนชื่อ ClickDetector

  3. เปิดสคริปต์ TweenMove แล้วคัดลอกและวางสคริปต์ด้านล่าง


    -- วิ่งตรงกลับไปยังอีกฝั่งของอาวุธตามแกนที่เลือก
    -- ปุ่มมีสถานะเปิด/ปิดซึ่งเคลื่อนย้ายชิ้นส่วนไปข้างหน้าหรือข้างหลัง
    local TweenService = game:GetService("TweenService")
    local button = script.Parent
    local clickDetector = button:FindFirstChildWhichIsA("ClickDetector")
    local buttonState = -1 -- กำหนดทิศทางปุ่ม; -1 หมายถึงการกดลง, 1 หมายถึงการป๊อปออก
    local inTween = false
    -- แปรที่ปรับแต่งได้
    local TWEEN_TIME = 0.15
    local TWEEN_MOVE_DISTANCE = 1.5
    -- แปรงค่า Tween
    local buttonTweenInfo = TweenInfo.new(
    TWEEN_TIME, -- เวลา
    Enum.EasingStyle.Quad, -- EasingStyle
    Enum.EasingDirection.Out -- เอาทิศทางออก
    )
    local function buttonPress()
    -- หากปุ่มกำลังเปลี่ยนแปลง ป้องกันมันจากการใช้งานอีกครั้ง
    if inTween == true then
    return
    end
    -- คํานวณ CFrame ใหม่สําหรับตําแหน่งปุ่ม
    local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE * buttonState, 0)
    local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)
    -- สร้าง tween และเล่น
    local tweenButton = TweenService:Create(button, buttonTweenInfo, {CFrame = newCFrame})
    tweenButton:Play()
    inTween = true
    -- เมื่อเสร็จสิ้นการทวีคูณให้ปุ่มใช้งานได้อีกครั้ง
    tweenButton.Completed:Connect(function()
    inTween = false
    -- ย้อนสถานะปุ่ม
    buttonState *= -1
    end)
    end
    clickDetector.MouseClick:Connect(buttonPress)
  4. ทดสอบและคลิกที่วัตถุ ในระหว่างการทดสอบ คุณอาจสังเกตเห็นว่าวัตถุเคลื่อนทิศทางหรือระยะทางผิด สิ่งนี้สามารถปรับแต่งในส่วนต่อไป

ทิศทางผิด; ต้องปรับแต่ง
ย้ายได้อย่างถูกต้อง; ไม่จำเป็นต้องปรับแต่ง

ปรับปรุงการเคลื่อนไหว

เมื่อเรื่องราวถูกเพิ่มเข้ามาแล้ว คุณสามารถปรับแต่งมันเพื่อเหมาะกับความต้องการของเกมของคุณ ย้อนกลับหรือขึ้นและลง

เปลี่ยนตำแหน่ง

จำไว้ว่าวัยรุ่นเริ่มต้นจากมูลค่าเริ่มต้นไปยังมูลค่าเป้าหมาย สคริปต์นี้ใช้ CFrames เพื่อย้ายปุ่มในทิศทางที่เกี่ยวข้องกับตำแหน่งปัจจุบันของมัน ทิศทางนี้จะได้รับการควบคุมใ

ในแถวนั้น เราสร้าง CFrame ใหม่โดยใช้ X, Y และ Z ติดต่อกัน ในตัวอย่างนี้ ปุ่มเคลื่อนที่เมื่อเป็นสัดส่วนกับแกน Y ของมัน


-- คํานวณ CFrame ใหม่สําหรับตําแหน่งปุ่ม
local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE * buttonState, 0)
local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)

เพื่อให้ปุ่มเคลื่อนที่ในทิศทางที่แตกต่างกัน เพียงแค่ แทนที่หนึ่งในของต้องการด้วยสาย: TWEEN_MOVE_DISTANCE * buttonState ตั้งค่าความลึกของทุกของต้องการไว้ที่ 0

เช่นเดียวกัน สายนี้จะย้ายมันไปยังแกน X ของมันแทน


-- คํานวณ CFrame ใหม่สําหรับตําแหน่งปุ่ม
local offsetCFrame = CFrame.new( TWEEN_MOVE_DISTANCE * buttonState, 0, 0)
local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)

การปรับเวลาและระยะทาง

สคริปต์นี้รวมถึงแปรต่อไปนี้ที่ส่งผลต่อการเคลื่อนที่ของ tween ชื่อเรื่องเหล่านี้เขียนขึ้นโดยเฉพาะสำหรับสคริปต์นี้เพื่อให้มันถูกปรับแก้

ลองเปลี่ยนค่าของตัวแปรหนึ่งด้านล่าง:

  • ตรวจสอบ 11 - TWEEN_TIME : เวลาในวินาทีที่ใช้สำหรับการเกิดขึ้นของ tween
  • สาย 12 - TWEEN_MOVE_DISTANCE : ระยะที่ปุ่มเคลื่อนที่ใน studs

การปรับแต่งคุณสมบัติอื่น ๆ

ส่วนใหญ่ของโปรไฟล์ที่มีข้อมูลชุดตัวเลขสามารถปรับแต่งได้ ส่วนนี้รวมถึงโปรไฟล์ทั่วไปบางอย่างเช่นการหมุนที่สามารถใช้เพื่อนำความคิดเห็นของผู้เล่นเข้ามาในเกมของคุณ โปรดทราบว่าคุณยังสามา

สำหรับรายการโปรพีเรียบร้อยให้ดูที่หน้า TweenService API

หมุน

สำหรับการหมุน ให้ผสานการเปลี่ยนแปลงและ CFrames โดยใช้ Vector3 เท่านั้น เมื่อสัตว์เลี้ยงหรือเหรียญถูกหยิบขึ้น การหมุนทวีนสามารถใช้เพื่อทำให้สัตว์เลี้ยงขยับได้เมื่อสัตว์เลี้ยงหรือเหรียญถูกหยิบขึ้น

ในตัวอย่างสคริปต์ต่อไป, ตำแหน่งและการหมุนของสัตว์เลี้ยงถูกปรับเปลี่ยนเมื่อคลิกเพื่อแสดงว่ามีความสุขเมื่ออยู่กับสัตว์เลี้ยง

รหัสด้านล่างจะหมุนวัตถุตามจำนวนองศาใน TWEEN_ROT_ANGLES


-- ใช้ tween เพื่อทำให้วัตถุหมุนขึ้นและตีกลับ
local TweenService = game:GetService("TweenService")
local partToTween = script.Parent
local clickDetector = partToTween:FindFirstChildWhichIsA("ClickDetector")
local inTween = false
-- แปรที่ปรับแต่งได้
local TWEEN_TIME = 0.25
local TWEEN_ROT_ANGLES = -45
local TWEEN_MOVE_DISTANCE = 3
-- แปรงค่า Tween
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- เวลา
Enum.EasingStyle.Quad, -- EasingStyle
Enum.EasingDirection.Out, -- เอาทิศทางออก
1, -- RepeatCount (เมื่อน้อยกว่า zero จะทำซ้ำได้อย่างไม่มีที่สิ้นสุด)
true -- ย้อนกลับ (tween จะย้อนกลับเมื่อไปถึงเป้าหมายของมัน)
)
local function activateAction()
-- หากวัตถุกำลังเริ่มต้นขึ้น หยุดให้มันเริ่มต้นอีกครั้ง
if inTween == true then
return
end
-- คํานวณ CFrame ใหม่สําหรับตําแหน่งและการหมุนของวัตถุ
local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE, 0)
local rotatedCFrame = CFrame.Angles(math.rad(TWEEN_ROT_ANGLES), 0, 0)
offsetCFrame = offsetCFrame:ToWorldSpace(rotatedCFrame)
local newCFrame = partToTween.CFrame:ToWorldSpace(offsetCFrame)
-- สร้าง tween และเล่น
local tweenObject = TweenService:Create(partToTween, tweenInfo, {CFrame = newCFrame})
tweenObject:Play()
inTween = true
-- เมื่อเสร็จสิ้นการปรับแต่งตัวอักษรใหม่
tweenObject.Completed:Connect(function()
inTween = false
end)
end
clickDetector.MouseClick:Connect(activateAction)

การเคลื่อน

การเปลี่ยนขนาดของวัตถุในเกมยังสามารถแสดงได้ว่าผู้เล่นได้โต้ตอบกับพวกเขา เช่น การเก็บของเช่นกันสุขภาพหรืออัญมณีสามารถหดตัวเมื่อสัมผัสได้ เพื่อเพิ่มขนาดของชิ้นส่วน ให้เปลี่ยนเ


-- ปรับขนาดของชิ้นส่วนเมื่อสัมผัสแล้วทำลาย
local TweenService = game:GetService("TweenService")
local partToScale = script.Parent
local inTween = false
-- แปรที่ปรับแต่งได้
local TWEEN_TIME = 1
local TWEEN_SCALE = Vector3.zero
-- แปรงค่า Tween
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- เวลา
Enum.EasingStyle.Exponential, -- EasingStyle
Enum.EasingDirection.Out -- เอาทิศทางออก
)
local function onPartTouch(otherPart)
-- หากวัตถุกำลังเริ่มต้นขึ้น หยุดให้มันเริ่มต้นอีกครั้ง
if inTween == true then
return
end
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- ป้องกันการชนกันเพิ่มเติมบนวัตถุเมื่อมันถูกหยิบ
partToScale.CanCollide = false
-- สร้าง tween และเล่น
local tweenObject = TweenService:Create(partToScale, tweenInfo, {Size = TWEEN_SCALE})
tweenObject:Play()
inTween = true
-- เมื่อเสร็จสิ้นการทวีคูณสิ่งของจะทำลายวัตถุ
tweenObject.Completed:Connect(function()
partToScale:Destroy()
end)
end
end
partToScale.Touched:Connect(onPartTouch)

เปลี่ยนสี

ชิ้นส่วนสามารถเปลี่ยนสีโดยปรับแต่งด้วยมูลค่า Color3 อินสแตนซ์ศัตรูหรือวัตถุที่ทำลายได้สามารถแปลงสีเพื่อให้ข้อเสนอแนะว่าพวกเขาถูกกดหรือคลิก


-- เปลี่ยนสีของวัตถุเมื่อคลิกและทำลายหลังจาก 3 คลิก
local TweenService = game:GetService("TweenService")
local partToTween = script.Parent
local clickDetector = partToTween:FindFirstChildWhichIsA("ClickDetector")
local inTween = false
-- แปรแต่งได้
local TWEEN_TIME = 0.2
local COLOR_ON_HIT = Color3.fromRGB(255, 0, 50)
local hitCount = 0
-- แปรงค่า Tween
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- เวลา
Enum.EasingStyle.Exponential, -- EasingStyle
Enum.EasingDirection.InOut, -- เอาทิศทางออก
0, -- RepeatCount (เมื่อน้อยกว่า zero จะทำซ้ำได้อย่างไม่มีที่สิ้นสุด)
true -- ย้อนกลับ (tween จะย้อนกลับเมื่อไปถึงเป้าหมายของมัน)
)
local function activateAction()
-- หากวัตถุกำลังเริ่มต้นขึ้น หยุดให้มันเริ่มต้นอีกครั้ง
if inTween == true then
return
end
-- สร้าง tween และเล่น
local tweenObject = TweenService:Create(partToTween, tweenInfo, {Color = COLOR_ON_HIT})
tweenObject:Play()
inTween = true
-- เมื่อเสร็จสิ้นการปรับแต่งตัวอักษรใหม่
tweenObject.Completed:Connect(function()
inTween = false
-- เพิ่มจำนวนการโจมตี
hitCount += 1
-- หลังจาก 3 การโจมตี ทำลายวัตถุ
if hitCount == 3 then
partToTween:Destroy()
end
end)
end
clickDetector.MouseClick:Connect(activateAction)

ในขณะที่สคริปต์นี้ใช้ส่วนปกติเพื่อเปลี่ยนสี แต่ยังเป็นไปได้ที่จะใช้สิ่งนี้ใน MeshParts ด้วยผลิตภัณฑ์ที่ใช้เท็กส์เตอร์ MeshParts มักจะนำเข้า 3D โมเดล แทนที่จะเป็นส่วนผลิตโดยตรงใน Roblox Studio

หากคุณกำลังทำงานกับ MeshPart ที่มีข้อความสมบูรณ์ข้างต้น กำลังติดตาม:

  1. ใช้ SpecialMesh แทน MeshPart เนื่อหากเนื้อผ้า MeshPart จะถูกเปลี่ยนสีโดยสคริปต์

  2. เปลี่ยนสคริปต์เพื่อแก้ไขสีของเนื้อหุ้มพิเศษแทนสีของคุณสมบัติ

ตัวอย่างโครงการ

ดูตัวอย่างสคริปทั้งหมดในสถานที่นี้ที่ไม่มีล็อคสคริปต์ รวมทั้งสคริปทั้งหมดที่สามารถปรับแก้ได้

รวมถึงสคริปต์สำหรับการหมุน การขยาย และการเปลี่ยนสีสำหรับวัยรุ่น