【Roblox】TweenServiceでModelを滑らかに回転させる
コインなどのモデルを滑らかに回転させたいときに使うときのコード例です。設定を失敗すると1周後の次の回転が綺麗につながらなかったり、回転しているように見えなかったりして、結構面倒なので、上手くできた例を残しておきます。
-- モデルを滑らかに回転させたいときに呼ぶ関数
local function rotateModel(model)
if not model:IsA("Model") or not model.PrimaryPart then return end
local spininfo = TweenInfo.new(2, Enum.EasingStyle.Linear)
local goal={}
local tween = TweenService:Create(model.PrimaryPart, spininfo, goal)
goal.CFrame=model.PrimaryPart.CFrame * CFrame.Angles(0,math.rad(120),0)
local Spin1 = TweenService:Create(model.PrimaryPart,spininfo,goal)
goal.CFrame=model.PrimaryPart.CFrame * CFrame.Angles(0,math.rad(240),0)
local Spin2 = TweenService:Create(model.PrimaryPart,spininfo,goal)
goal.CFrame=model.PrimaryPart.CFrame * CFrame.Angles(0,math.rad(360),0)
local Spin3 = TweenService:Create(model.PrimaryPart,spininfo,goal)
Spin1:Play()
Spin1.Completed:Connect(function()Spin2:Play() end)
Spin2.Completed:Connect(function()Spin3:Play() end)
Spin3.Completed:Connect(function()Spin1:Play() end)
end
goal.CFrame=model.PrimaryPart.CFrame * CFrame.Angles(0,math.rad(360),0)と、TweenInfoにrepeatCount = -1(無限)の設定で行けそうな気がしますが、それだと回転は発生せず静止しているように見えてしまいます。
回転が終わってる状態を繰り返すとみなすのかな?
この記事が気に入ったらサポートをしてみませんか?