RobloxStudioで「海面を移動する」シンプルなボートを作成するメモになります。ボートというよりはイカダに近いです。
移動する乗り物の基本的な仕組みになります。
はじめに
下記で、RobloxStudioで簡単な地形を作成を行いました。今回は、作成した地形(水の上)を動く簡単なイカダを作成していきます。
制作開始
まずは上記の記事を参考にして、簡単に地形(陸地・水)を作成します。

次に水の上にボートを浮かせます。
「Part」から「Block」を選択してスケールを変更してイカダのような形にします。

次にキャラクターが座る部分を作成します。「Part」の配下に「VehicleSeat」を追加します。「VehicleSeat」のプロパティの「Control」の値は下記のように仮にセットしておきます。

「VehicleSeat」の詳細は下記公式リファレンスが参考になります。
「VehicleSeat」の配下に「WeldConstraint」を追加して、Partsにセットします。

イカダを動くようにする
キー操作でイカダが動くようにしていきます。まずは前進、後退するようにします。「VehicleSeat」の配下に「VectorForce」を追加します。

「Part」の配下に「Attachment」を追加します。「Attachment」の位置をイカダの後ろの真ん中のあたりにします。

「VectorForce」の「Attachement0」にセットします。

「VectorForce」のForceの値を「0,1000,0」としてみます。矢印がイカダの後ろに向いていればOKです。

矢印の向きが後ろではない場合、「Attachment」の「Axis」、「SecondaryAxis」を変更します。

ここで、試しに実行してみます。
キャラクターが椅子に座り、キーボードのWASDを押した時に、Steer、Throttleの値が1,-1に変わればOKです。

スクリプトの作成
「Part」の配下に「Script」を追加します。

スクリプトの中身を下記に変更します。
local Part = script.Parent local VehicleSeat = Part.VehicleSeat VehicleSeat.Changed:Connect(function() VehicleSeat.VectorForce.Force = Vector3.new(0,-VehicleSeat.Throttle * 1000,0) end)
キーボードのWキー、Sキーを押した時、Y方向に力が加わります。
矢印が後ろ向きなので「-VehicleSeat.Throttle」として向きを反転しています。
試しに実行してみて、Wキーを押した時に前進、Sキーを押した時に後退すればOKです。動かない場合は「VectorForceの矢印方向が合っているか」、「Wキーを押した時にThrottleの値が1になるか」、「Partがアンカーで固定されていないか」などを確認します。
イカダを回転させる
「VehicleSeat」の配下に「Torque」を追加します。

「Torque」の「Attachment0」をセットして、「Torque」の値を変更したときに回転方向を確認します。

理屈は「VectorForce」と同じです。キーボードのAキー、Dキーを押した時にイカダの後ろに回転力を加えるので、スクリプトを下記のように変更します。
local Part = script.Parent
local VehicleSeat = Part.VehicleSeat
local Force = VehicleSeat:WaitForChild("VectorForce")
local Torque = VehicleSeat:WaitForChild("Torque")
VehicleSeat.Changed:Connect(function()
Force.Force = Vector3.new(0,-VehicleSeat.Throttle * 1000,0)
Torque.Torque = Vector3.new(0,0,-VehicleSeat.Steer*1000)
end)
実行して下記のように動けばOKです。イカダの速度や回転力を変えたい場合は「1000」の部分を変更します。

「VectorForce」、「Torque」で力を加えて物体を移動してみました。速度を与える方法や、他のパーツを加えることでより細かい制御を行うことなども出来ます。
