移動オブジェクトを作成する

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

移動オブジェクト は、3D 空間内の 1つまたは複数の軸で移動するオブジェクトです。Roblox のシミュレーションエンジンの内蔵パワーを使用して、重力、空気力学、摩擦など、プレイヤーにとって熟練して直感的な実世の物理行動を模倣する方法で、オブジェクトを移動させ、環境と対話させることができます。

このチュートリアルでは、移動オブジェクト.rbxl を参考として使用し、Studio で物理力が線形運動にどのように影響するかを説明し、異なる移動行動の経験でオブジェクトをポイントAからポイントBに移動するためのさまざまな技術を示します。その中には、次の指示が含まれます:

  • LinearVelocity 移動制約を使用して、一連のアセンブリを一定の線速度で移動する
  • PrismaticConstraint を使用して、アセンブリを単一の軸に制限し、3D 空間のポイントに対して定速な線速度で移動する
  • ApplyImpulse メソッドを使用して、初期の力の衝撃でアセンブリを移動し、アセンブリが時間をかけて減速するようにします。

線形運動と物理的な力

Roblox Studio は、物理的な動作をリアルタイムにシミュレートする実世界のシミュレーションエンジンであるため、線形移動で移動するオブジェクトがエクスペリエンスでどのように振る舞うかを予測するには、線形動作でオブジェクトが現実世界でどのように移動するかの高レベルの理解が重要です。 線形移動 は、軸に沿って移動です。たとえば、ブロックに線形移動があると、設定された軸に移動します。

A gray block in front of a dark background. The movement axis is highlighted, and it faces toward the left of the screen to signify that the block is going to move along the world's Y axis.

線形動作は、オブジェクトを移動させる外部の物理的な力または引っ張る力がないと存在できません。ニュートンの 運動の第一法則 によると、静止オブジェクトは静止し、移動オブジェクトは外部力によって作用されない限り、定速速度で動作し続けます。たとえば、風などの物理的な力がそれを移動させない限り、静止ブロックは静止したままです。

フォース は、オブジェクトが軸に沿って線速度を変更する物理的な押し出しや引き出しの方向と大きさの測定です。速度の変更は 加速 と呼ばれます。このコンセプトは、オブジェクトがスタジオで移動するのに特に重要です;オブジェクトに適用する力が多ければ多いほど、より速く加速します。

これは、力が重力や摩擦などの物理的な力に抵抗するオブジェクトに対して大きくなければならないためです。たとえば、ブロックをメタルプレートに配置する場合、風の物理的な力がメタルプレートからの摩擦量を克服して、ブロックの加速を継続する必要があります。風の力がメタルプレートからの摩擦よりもはるかに大きくない場合、ブロックは、前の例よりも遅く加速します。

A gray block in front of a dark grey metal plate with a diagram that signifies the block will have a plate friction to slow the block's movement from the wind.

線速度 はオブジェクトの移動量、またはオブジェクトが時間の期間にわたって軸に沿って位置を変更する速度の測定です。スタジオは、オブジェクトが秒ごとに移動するスタッド数に基づいて線速度を測定します。スタッドは、長さを測定するための Roblox の主な物理ユニットであり、各スタッドは実世界で約 28cm に相当します。

A gray block in front of the default baseplate's 4x4 grid texture. A single stud cube rectangle is highlighted.

線速度を理解することは、エクスペリエンスでゲームプレイを設計する上で重要であり、移動オブジェクトの特定の速度を達成するために必要な力を決定するのに役立ちます。たとえば、オブジェクトを上に推進したいときは、環境内の重力を克服するためにフォースを調整する方法を考えることが重要であり、オブジェクトが正確に移動するようになります。

次のセクションでは、オブジェクトを移動する方法を学ぶとともに、環境内のどんな反対物理力も克服するために必要な力で、これらの概念により深く潜ります。これらの物理コンセプトを今後の技術でレビューすると、Studio で任意の理想的な線形移動動作を達成するためにプロパティ値を調整する方法をより正確に予測できます。

一定の線速度を維持する

オブジェクトが一定の線速度に到達し、維持するには、オブジェクトの線速度を減速させるか、オブジェクトを静止状態に保つ反対の物理的力を乗り越える必要があります。たとえば、Studio でオブジェクトが線速度 [0, 12, 0] を持つようにしたい場合、オブジェクトが環境の Y 軸に沿って 12 スタッド per 秒に到達し、維持できるように十分な力が必要です。

必要な力の量は、環境内の反対物理力(重力や摩擦など)だけでなく、オブジェクト自体にも依存します。たとえば、同じ軸で移動している 2つのオブジェクトが同じ形をしている場合、大きな質量を持つオブジェクトは、同じ線形加速を達成するにはより多くの力が必要です。

小さな三角形の部分には少量の質量があるので、同じ加速度を達成するには少ない力が必要です。
大きな三角形の部分には大量の質量があるので、同じ加速度を達成するにはより多くの力が必要です。

次のサブセクションでは、異なる形状とサイズのアセンブリを使用して、オブジェクト全体またはオブジェクトの一部のみを定速線速度で移動する方法を教えます。異なるプロパティ値を試すとき、自分の経験で必要な最大力の量を推定する方法を学びます。

線形速度制約を使用

LinearVelocity オブジェクトは、全体のアセンブリに力を加えて定速線速度を維持する 移動制約 のタイプです。アセンブリの位置を軸にロックしないで、移動中に 3D 空間で他のオブジェクトと衝突すると、アセンブリは自由に回転できます。この種の動きは、プレイヤーが予測するのが難しい驚くべきゲームプレイシナリオにつながります。

リリーパッドが互いに衝突すると、方向を変更しながらも、河に沿って一定の線速度で流れ続けます。

アセンブリを移動開始するには、LinearVelocity 制約が知っておく必要があります:

  • 力を適用するポイントと正または負の方向。
  • アセンブリが秒ごとに移動するスタッドの量。
  • エンジンがアセンブリに適用できる最大力の量で、定速線速度に到達する。

このプロセスを示すために、あなたは ワッシャーで構成されたリリーパッドを設定し、ワールドの負のX軸に沿って、リリーパッドを スタッド毎秒移動するための 制約を参照する付属ファイルを設定します。

A close up view of a lily pad. The lily pad's constraint visual aid is visible, and it points to the right, which is the world's negative X axis.

添付ファイルを追加

アセンブリに Attachment オブジェクトを追加して強度を適用するポイントを指定し、3D 空間で付属の位置を構成して、アタッチメントを指定できます。サンプル 移動オブジェクト エクスペリエンスは、制約がメッシュを特定の軸に沿って移動できるように、リリーパッドの中心に添付ファイルを配置します。

添付ファイルには、動作軸を視覚化するのに役立つ視覚的な手助けが含まれています。黄色い矢印は付属の主軸を示し、オレンジの矢印は付属のセカンダリ軸を示します。この手法のステップでは、動作軸のどちらもリリーパッドの動きに影響しませんが、将来の参考のために、これらの視覚的援助を理解することが重要です。なぜなら、次の技術では、PrismaticConstraint などの異なる種類の制約に対する理想的な動作を決定するのに役立つからです。

A attachment's visual aid arrows. The yellow arrow that signifies the attachment's primary axis points up, and the orange arrow that signifies the attachment's secondary axis points to the right.

添付ファイルを追加するには:

  1. エクスプローラー ウィンドウで、 線速度例 フォルダを拡大し、その子フォルダの LilyPad_DIY モデルを拡大します。

  2. パッド メッシュに添付ファイルを挿入する。

    1. メッシュの上をホバーし、⊕ ボタンをクリックします。コンテキストメニューが表示されます。
    2. メニューから、 添付ファイル を挿入します。添付ファイルはパーツの中央に表示されます。
    3. 添付ファイルを MoveAttachment に名前変更します。
    A close up view of a lily pad and its attachment visual aid. The primary axis points away from the camera, and the secondary axis points upward.

制約を構成する

今、メッシュに移動する固定ポイントがあるため、リリーパッドを移動するための LinearVelocity 制限の属性を構成して、定期的な線速度、スタッド数、メッシュが 1 秒ごとに移動する量、およびエンジンがメッシュに適用できる最大力でメッシュが定期的な線速度に達することを指定することができます。

サンプル 移動オブジェクト エクスペリエンスは、世界の負のX軸に沿って、1秒ごとにリリーパッドを 15スタッド移動させるために、5000 Rowtonsの定期的な力を適用します。ロウトンは、力を測定するための Roblox の主な物理ユニットです。Roblox の物理ユニットとそれらがメトリックユニットに変換する方法については、Roblox ユニット を参照してください。

LinearVelocity 制約を構成するには:

  1. (オプション) 制約を 3D 空間に表示して、線形方向を参照できるようにする

    1. ツールバーの モデル タブに移動し、 制限 セクション。
    2. 現在有効でない場合は、 制約詳細 をクリックして制約ビジュアル補助を表示します。
    A close up view of the Studio's Constraints section UI.
  2. LinearVelocity 制約をパッドメッシュに挿入します。 **** 1. エクスプローラ ウィンドウで、メッシュをホバーし、⊕アイコンをクリックします。コンテキストメニューが表示される 2. コンテキストメニューから、 線速度 を挿入します。

  3. メッシュの添付ファイルを新しい制約に割り当てる。

    1. エクスプローラ ウィンドウで、制約を選択します。
    2. In the プロパティ window,
      1. Set 添付ファイル0添付ファイル移動 に設定します。
      2. MaxForce5000 に設定して、ターゲットの線速度を達成するために、最大 5000 行トンの定力を適用します。
      3. 相対を世界に保つ世界 に移動して、リリーパッドを世界の位置と方向に相対させます。
      4. 速度制限ライン に設定して、付属の線に沿って力を制限します。
      5. Set ラインディレクション-1, 0, 0 に設定して、世界の負の X軸でリリーパッドを移動させます。このプロパティを 1, 0, 0 に設定した場合、リリーパッドは世界の正の X軸に沿って移動します。
      6. Set ライン速度15 に設定して、リリーパッドを秒ごとに15スタッド移動させる
    A close up view of a lily pad and its constraint visual aid arrow that points to the right, or the world's negative X axis.
  4. 設定した力の量が、世界の負の X 軸に沿って 15スタッド毎秒メッシュを移動させることを確認します。

    1. ツールバーで テスト タブに移動します。
    2. プレイテストモードから 実行 を選択します。スタジオは、アバターを 3D 空間に置かないで、現在のカメラポジションで体験をシミュレートします。
    Rapid playtest options in Studio.

プリズム制約制限を使用

オブジェクトは、2つの付属物の間に剛性のジョイントを作成し、親アセンブリがそれぞれ相対して1軸に移動できるようにする 機械的な制約 のタイプです。両方のアセンブリの位置を単一の軸にロックすると、各アセンブリは同じ方向に回転する場合にのみ回転できます。

この種の動きは、プレイヤーが予測しやすい安定したゲームプレイシナリオにつながります。たとえば、サンプル 移動オブジェクト エクスペリエンスは、PrismaticConstraint オブジェクトを使用して、プレイヤーが注意深く巨大な川を渡るのに使用できるログプラットフォームを移動します。

PrismaticConstraint.ActuatorTypeモーター に設定すると、この制約は付属物の 2つに力を加え、付属物が一定の線速度に達し、維持する目的で適用されます。付属の親アセンブリの 1つをアンカーすると、アンカーされたアセンブリは静止したまま、一定の線速度で未アンカーのアセンブリを移動し続けます。

アセンブリを移動開始するには、PrismaticConstraint 制約が知っておく必要があります:

  • 力を適用するポイントと正または負の方向。
  • 付属物が 1 秒ごとに移動する量のスタッド。
  • エンジンが付属物や親アセンブリに適用できる最大力の量で、定常の線速度に到達する

このプロセスを示すために、2つのオブジェクトを持つログアセンブリを構成し、PrismaticConstraint ワールドの負のX軸に沿って、ログを 40 スタッド毎秒移動するためのリファレンスを持つ子付きで、世界の定常線速度で構成します。

A close up view of a brown log on top of a river. The log's constraint visual aid is visible and points to the right, or the world's negative X axis.

添付ファイルを構成する

アセンブリ内で特定のオブジェクトを移動する方向を指定するには、アセンブリに 2 Attachment オブジェクトを追加し、3D 空間でその配置と方向を設定します。サンプル 移動オブジェクト エクスペリエンスは、未固定ログが固定部分と重複する位置の近くの世界のX軸に沿って2つの添付ファイルを整列し、またはそれぞれの添付ファイルの主軸を世界のネガティブX軸に向けて向けます。

次のセクションでプリズム的制約制約を構成すると、ログ が関連してアンカーパーツに移動します 。言い換えれば、ログは 3D 空間に固定されているため移動できない静止部分から移動します。

プリズム制約の付属を構成するには:

  1. エクスプローラー ウィンドウ で、 PrismaticConstraintExample フォルダを拡大し、その子 Log_DIY モデルを拡大します。

  2. ログ メッシュに添付ファイルを挿入する。

    1. メッシュの上をホバーし、⊕ ボタンをクリックします。コンテキストメニューが表示されます。
    2. メニューから、 添付ファイル を挿入します。添付ファイルはパーツの中央に表示されます。
    3. 添付ファイルを LogAttachment に名前変更します。
    A close up view of a log and its attachment visual aid. The primary axis points toward the camera, and the secondary axis points upward.
  3. 同じプロセスを使用して、 アンカー パーツに添付ファイルを挿入し、添付ファイルの名前を アンカー付属ファイル に変更します。

    A close up view of a log and two attachment visual aids. The primary axis of the new attachment visual aid points to the right, and the secondary axis points upward.
  4. 世界の座標に対する参照として、 ビューセレクター ツールを使用して、各付属ファイルの主軸が世界の負のX軸に向かうまで、 ログ付属アンカー付属 を回転させる

    A close up view of a log and its attachment visual aid. Both attachments have a primary axis that points to the right, and a secondary axis that points upward.
  5. アンカー付属物 を再配置して、両方の付属物が世界の X 軸に沿うようになります。

    A close up view of a log and its attachment visual aids that are now positioned horizontally. Both attachments have a primary axis that points to the right, and a secondary axis that points upward.

制約を構成する

今、あなたの添付ファイルが同じ軸に沿って並び、望む方向に向かっているので、ログが移動するのを希望するターゲットの常数速度を正方向または負方向に適用するかどうか、各添付ファイルが秒ごとに移動する量、およびエンジンがログに到達するために適用できる最大力の量を指定する PrismaticConstraint 制約のプロパティを構成できます。

自分の使用ケースに異なる値を選択できますが、サンプル 移動オブジェクト エクスペリエンスは、世界の負の X軸に沿って 40 ラディアン毎秒移動する添付ファイルを動かすために、定速線速度で 50000 行トンの定期的な力を適用します。ただし、アンカー付属が固定オブジェクトにあるため、ログの付属だけが移動できます。

プリズム制約を構成するには:

  1. PrismaticConstraint オブジェクトを ログ メッシュに挿入します。

    1. エクスプローラ ウィンドウで、メッシュをホバーし、⊕アイコンをクリックします。コンテキストメニューが表示される
    2. コンテキストメニューから、 プリズム制約 を挿入します。
  2. ログの添付ファイルを新しい制約に割り当てて、ログが 固定ブロックパーツに対して移動するようにします

    1. エクスプローラ ウィンドウで、制約を選択します。
    2. In the プロパティ window,
      1. Set 添付ファイル0アンカー付属ファイル に設定します。
      2. 添付ファイル1ログ添付 に設定します。制限はビューポートに表示されます。
    A close up view of a log and its constraint visual aid. It doesn't have a arrow visual aid because it doesn't yet have a set velocity.
  3. エクスプローラー ウィンドウで制約を選択し、プロパティウィンドウで

    1. アクチュエータタイプモーター に設定。新しいプロパティフィールドが表示されます。
    2. モーターMaxForce50000 に設定して、ターゲットの線速度を達成するために、50000行の定力を適用します。
    3. 速度40 に設定して、ログを秒ごとに 40 スタッド移動する。
    A close up view of a log and its constraint visual aid arrow that points to the right, or the world's negative X axis.
  4. 設定した力の量が、世界の負の X軸に沿って 40スタッドのログを秒ごとに移動することを確認します。

    1. ツールバーで テスト タブに移動します。
    2. プレイテストモードから 実行 を選択します。スタジオは、アバターを 3D 空間に置かないで、現在のカメラポジションで体験をシミュレートします。
    Rapid playtest options in Studio.

初期の線形力を適用する

オブジェクトの線速度を変更する別の方法は、力の衝撃を適用することです。力の衝撃の後、オブジェクトは、摩擦などの反対力がある場合は停止するまで減速し、反対力がない場合は定速速度で動き続けます。

この技術は、爆発や衝突のような重大なゲームプレイイベントの後、オブジェクトを移動するのに便利です、プレイヤーに即時フィードバックを提供するため。デモを示すために、次のサブセクションでは、新しい値でゲームプレイ要件に対応することができる初期の衝動でジャンプパッドと衝突したときにプレイヤーのキャラクターを空に向上させる方法を教えます。

ApplyImpulse を使用

ApplyImpulse メソッドは、反対の力が存在すると停止する前に初期の線速度を得るために、全体のアセンブリに力を加えます。アセンブリを移動開始するには、メソッドは知る必要があります:

  • 移動するアセンブリ。
  • 初期の線速度に到達するために力を適用する軸。
  • 各軸に適用する力の量。

スクリプトでこれらすべての値を定義できます。たとえば、サンプルスクリプトでは、アセンブリをプレイヤーキャラクターの Humanoid オブジェクトとして移動させ、2500 Rowton秒の力パルスを適用して、ワールドの正の Y軸でプレイヤーを上に向上させます。プレイヤーキャラクターには異なる量の質量があるため、このフォースを増やしてバランスを取らなければならない可能性があり、プレイヤーキャラクターの質量が少ない量でも発射できないように高すぎることがあります。

アセンブリを移動するには、ApplyImpulse を使用します:

  1. エクスプローラー ウィンドウで、 [ApplyImpulseExample] フォルダを拡大し、その子フォルダ JumpPad_DIY モデルを拡大します。

  2. ジャンプパッド 部分にスクリプトを挿入します。

    1. パーツの上をホバーし、⊕ ボタンをクリックします。コンテキストメニューが表示されます。
    2. メニューから スクリプト を挿入します。添付ファイルはパーツの中央に表示されます。
    3. スクリプトを JumpScript に名前変更します。
  3. デフォルトコードを次のコードで置き換えます:


    local volume = script.Parent
    local function onTouched(other)
    local impulse = Vector3.new(0, 2500, 0)
    local character = other.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and other.Name == "LeftFoot" then
    other:ApplyImpulse(impulse)
    end
    end
    volume.Touched:Connect(onTouched)