Unreal Editor for Fortnite (UEFN) の物理は、コリジョン、爆発、オブジェクトの動きなどの物理的な力のエフェクトをシミュレートします。 このシミュレーションにより、落下時の加速度やあるオブジェクトが別のオブジェクトに衝突したときの相互作用などが計算されます。
UEFN の物理演算がベータ版になりました。 物理演算を使用したプロジェクトを公開できるようになりましたが、ツールはまだ頻繁にアップデートが行われ、UEFN の島に影響を与える可能性がありますのでご注意ください。 37.40 リリース ノートで既知の問題のリストを確認してください。
何ができるのか
物理は、以下によって物理オブジェクトとインタラクトできます。
物理ベースのプレイヤー キャラクターによって物理オブジェクトに入る。
ツルハシで叩く、または武器で撃つ (手りゅう弾の投てきなど)。
小道具移動装置を使用して物理オブジェクトを動かす、または回転する。
仕掛けを使用する。
物理対応の仕掛け
次の仕掛けは物理小道具でテストされており、確実に機能します。
物理を有効化
このベータ機能を有効にするには、プロジェクト設定で物理を有効にする必要があります。
UEFN を開いて、新規または既存のプロジェクトを選択します。
[Project (プロジェクト)] > [Project Settings (プロジェクト設定)] の順に移動します。
[Beta Access (ベータ アクセス)] の下で、[Physics (物理算)] の横のボックスをオンにします。
物理は現在、どのブランド テンプレートでもサポートされていないことに注意してください。
物理的動き
ゲーム環境では、物理オブジェクトはニュートンの運動の第 2 法則 (F=ma (力 (F) は質量 (m) x 加速度 (a) と等価である)) で説明されているのと同じ自然力を受けます。
力
力は、ボディの動きを維持したり、変えたり、ゆがめたりします。 ビデオ ゲームでは、武器、その他の移動するオブジェクト、仕掛け、爆発などによってキャラクターやオブジェクトにこの力を加えることができます。
質量
質量はすべての物質の中核的性質であり、物質のボディが力を加えられたときに速度や位置の変化にどれだけ抵抗するのかを示します。 質量が大きくなるほど、力による変化は少なくなります。 ゲームでは、物理プロパティのあるオブジェクトに質量が設定されています。 質量の大きいオブジェクトは動きにくくなり、別のオブジェクトとインタラクトした後に進む距離が短くなります。
アクセラレーション
加速度は、ボディが動いたときの速度の変化の割合です。 これは、速度と方向の観点から評価されます。 ゲームでは、これはピンボール バンパーがピンボール バンパーとインタラクトするオブジェクトに与える割合になります。
小道具に物理を追加する
物理対応プロジェクトのフォートナイトの小道具はすべて、物理をシミュレートするように設定できます。 これを行うには、小道具に物理コンポーネントを追加する必要があります。
小道具の [Details] パネルで、[+ Add (+ 追加)] をクリックして [Fort Physics (フォートナイトの物理)] を選択します。
[Simulate Physics (物理をシミュレート)] をオンにし、必要に応じてその他の設定を変更します。
「 サッカー ゲームを作成する 」のチュートリアルで、カスタム小道具をインポートしてコリジョンを追加する方法の詳細をご覧ください。
ユーザー オプション
[Mass (質量)] では、小道具の重さを決定できます。 小道具が重くなるほど、力による影響が小さくなります。 以下の例では、左側と右側の木箱の質量が、それぞれ 100 と 25 になっています。
[Enable Gravity (重力を有効化)] では、オブジェクトに重力が加えられるかどうかを決定します。
[Start Awake (起きている状態で開始)] では、ゲームの開始時に物理小道具がシミュレートするのかどうか、オブジェクトが物理小道具といつ接触するのかを選択できます。 オフの場合、物理オブジェクトは力が加えられるまでシミュレートしません。 以下の例では、どの木箱も [Start Awake] がオフになっており、ヒットした後にのみ落下します。
[Linear Damping (線形減衰)] は、オブジェクトの速度を少しずつ落とします。 以下の例では、左側のバルーンの [Linear Damping] の値が 0.5 になっている一方、右側のバルーンは 0.01 に設定されています。
[Angular Damping (傾斜減衰)] は、オブジェクトの回転の速度を少しずつ落とします。 このトピックの詳細については、Unreal Engine ドキュメントの「物理の減衰」を参照してください。 以下の例では、左側の三角形の [Angular Damping] の値は 0.6 になっており、右側の三角形は 0.1 に設定されています。
[Impulse on Hit Multiplier (ヒット衝撃倍率)] では、ヒット時にオブジェクトに加えられる力を増大させることができます。 デフォルトは 1 ですが、 -5 から 5 までの任意の値に設定できます。 以下の例では、左側のサッカー ボールの倍率が 1.0 になっている一方、右側のサッカー ボールは 3.0 に設定されています。
tinmanjuggernaut が作成した Sketchfab のサッカー ボールは、Sketchfab の標準ライセンスの下で使用しています。
コンストレイント
小道具に回転コンストレイントと平行移動コンストレイントを追加することにより、小道具が特定の軸に沿って動かないようにすることができます。 コンストレイントの詳細については、Unreal Engine ドキュメントの「物理コンストレイントのリファレンス」を参照してください。
FAQ
以下に、この新しい機能を試すときに生じると思われる疑問点の一部を示します。 このセクションにご自身の疑問点が見当たらない場合は、最新のフォートナイト エコシステムとリリース ノートで最新情報を確認してみてください。
既存のプロジェクトで物理を有効にできますか。
はい。 既存のプロジェクトで物理を有効にすることはできますが、物理を有効にする前にプロジェクトのコピーを作成しておくことをお勧めします。 実験的機能を使用するプロジェクトを公開することはできません。 いつでも物理の実験的機能を無効にして島を公開できます。
シーケンサーでアニメートしたオブジェクトは物理オブジェクトとインタラクトできますか。
いいえ。 順序付けられたオブジェクトは、物理スレッドとはプロパティが異なり、物理的なインタラクションに必要な変更を実行しない、サーバーのゲーム スレッドで実行されます。 基本的に、シーケンサーは物理と一緒に使用するように作られていません。 小道具移動装置の仕掛けを使用することをお勧めします。 小道具移動装置を使用して動かされる小道具は、物理オブジェクトとインタラクトできます。
物理ですべてのプレイヤー移動モードを使用できますか。
歩く、走る、ダッシュ、ダッシュしてジャンプ、ジャンプ、落ちる、泳ぐ、しゃがむ、しゃがんで歩く、しゃがんでジャンプ、滑空、スカイダイビングなどの基本的なプレイヤーの動きは、期待どおりに実行されます。 ただし、現在のところ、よじ登り、スライディング、ジップライン、グラインド レール、ダウン状態 (DBNO) は使用できません。
どの武器もサポートされますか。
物理演算ベータ版はほとんどの武器に対応しています。 ツールセットがより強力になったことに伴い、物理演算に対応する武器の数も増加すると予想されます。
乗り物は物理対応の島で機能しますか。
乗り物はサポートされておらず、島では不安定になります。 ゲームのパーツが壊される可能性があるため、使用しないことをお勧めします。
プロジェクトで使用できる物理オブジェクトの数はいくつですか?
プロジェクトの物理オブジェクトの数を監視する必要があります。 物理的にシミュレートされた単純な形状 (ボックスまたは球体) の数が 50 個を超えると、島のパフォーマンスに影響する可能性があります。 複雑な物理形状は、単純な形状よりもパフォーマンスに影響を及ぼします。 環境やシミュレートするオブジェクトの複雑さによって結果が異なる場合があります。
物理はフォートナイト クリエイティブで機能しますか。
現在のところ、物理は UEFN でのみ使用できます。
ボリューム仕掛け API
物理オブジェクトのプレゼンスを検出するために、OnPhysicsEnter と OnPhysicsExit の 2 つのイベントが仕掛けに追加されました。
これらのイベントのペイロードは、Creative_Prop です。
Verse API
PropEntersEvent と PropExitsEvent が追加されました。 以下のスニペットは、エージェントがいつボリュームを出入りしたのかを追跡するために使用できます。
volume_device<public> := class<concrete><final>(creative_device_base):
PropEntersEvent<public>:listenable(creative_prop) = external {}
PropExitsEvent<public>:listenable(creative_prop) = external {}