Partの移動アニメーション
スムーズにパーツを移動させます。
- Workspace に Part を1つ追加します。
- Part に Scriptを追加します。
function move(x,y,z)
for i=1,20 do
script.Parent.Position += Vector3.new(x,y,z)
wait(0.01)
end
end
while true do
move(1,0,0)
move(-1,0,0)
move(0,1,0)
move(0,-1,0)
move(0,0,1)
move(0,0,-1)
end
Modelの移動アニメーション(1)
一般的には、複数のパーツを1つにまとめ、Model にすると思います。Model を動かす場合は下記の通りになります。
- いくつかの Part を追加します。
- それらを Model にします。(すべて選択し、右クリックメニューで Group を実行)
- Model の Anchor をオンにします。
- Model 内の代表的な Part の名前を変更します。(下記の例では「primary」としました)
- Model に Script を追加します。
-- 事前にModelのPropertiesのPrimaryPartに設定するのもOK
local model = script.Parent
model.PrimaryPart = model.primary
function move(x,y,z)
for i=1,20 do
model:MoveTo(script.Parent.primary.Position + Vector3.new(x,y,z))
wait(0.01)
end
end
while true do
move(1,0,0)
move(-1,0,0)
move(0,1,0)
move(0,-1,0)
move(0,0,1)
move(0,0,-1)
end
Modelの移動アニメーション(2)
PrimaryPart を使わない方法もありました。
local model = script.Parent
function move(x,y,z)
for i=1,20 do
model:PivotTo(model:GetPivot() + Vector3.new(x,y,z))
wait(0.01)
end
end
while true do
move(1,0,0)
move(-1,0,0)
move(0,1,0)
move(0,-1,0)
move(0,0,1)
move(0,0,-1)
end
座標間のスムーズ移動
Model を座標1から座標2へ往復移動させます。
- 適当なモデルをToolBoxから挿入します。Anchor をオンにします。
- Model に Script を追加します。
local next1CFrame = CFrame.new(-116,90,-108) -- 座標1
local next2Cframe = CFrame.new(50,8,180) -- 座標2
local model = script.Parent
model:SetPrimaryPartCFrame(next1CFrame) -- modelがすでにnext1CFrameにある場合は不要
while true do
for i=0, 1, 0.05 do -- ステップ数(0.05) の数字を大きくすると移動速度が速くなる
model:SetPrimaryPartCFrame(model:GetPrimaryPartCFrame():Lerp(next2CFrame,i))
-- model:GetPrimaryPartCFrame() が現在の位置
wait()
end
for i=0, 1, 0.05 do
model:SetPrimaryPartCFrame(model:GetPrimaryPartCFrame():Lerp(next1Cframe,i))
wait()
end
end
Lerp は、Vector3 のメソッドです。Leap(Vector3 goal,number alpha) で指定します。goal との間を alpha によって線形補間された Vector3 を返します。なお、alpha の範囲 [0, 1] に限定されません。
TweenAnimationを使う
上記の方法では「スタートからゴール位置まで2秒で動かしたい」というようなことを実現するには非常に困難です。そのような場合は、TweenAnimationを使うのがベストです。