パーツを動かす

Partの移動アニメーション

スムーズにパーツを移動させます。

  1. Workspace に Part を1つ追加します。
  2. Part に Scriptを追加します。
function move(x,y,z)
    for i=1,20 do
        script.Parent.Position = 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つにまとめ、Model にすると思います。Model を動かす場合は下記の通りになります。

  1. いくつかの Part を追加します。
  2. それらを Model にします。(すべて選択し、右クリックメニューで Group を実行)
  3. Model の Anchor をオンにします。
  4. Model 内の代表的な Part の名前を変更します。(下記の例では「primary」としました)
  5. Model に Script を追加します。
-- 事前にModelのPropertiesのPrimaryPartに設定するのもOK
script.Parent.PrimaryPart = script.Parent.primary

function move(x,y,z)
    for i=1,20 do
        script.Parent: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 を座標1から座標2へ往復移動させます。

  1. 適当なモデルをToolBoxから挿入します。Anchor をオンにします。
  2. 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(next1CFrame,i))
        -- model:GetPrimaryPartCFrame() が現在の位置
        wait()
    end

    for i=0, 1, 0.05 do
        model:SetPrimaryPartCFrame(model:GetPrimaryPartCFrame():Lerp(next2Cframe,i))
        wait()
    end
end

Lerp は、Vector3 のメソッドです。Leap(Vector3 goal,number alpha) で指定します。goal との間を alpha によって線形補間された Vector3 を返します。なお、alpha の範囲 [0, 1] に限定されません。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です