TRNG下でのルーム衝突

前書き
StaticやMoveable上を歩く
ルーム衝突の新しいフリップエフェクト
偽トリガ
コリジョントリガの種類
アイテムを衝突に適応させる
いくつかの不一致を解決するためのヒント
サンプルレベルのトリック
アイテムを移動してルーム衝突に揃える
丸い衝突をシミュレートする
セクターを丸めるために
衝突パネルのセット
衝突パネルに関するサンプル
新しい衝突に関する制限

前書き

バージョン1.2.1.5以降には、衝突に関する新機能があります。
これらの新しい衝突の主な目的は、ララにStaticやMoveableの上を歩いたり、登ったり、モンキースイングさせることです。
別の使用法は、meta2trプログラムを使用して、将来部屋の衝突を作成することです。

この機能を適用するのは簡単ですが、アイテムの形と衝突の形の不一致をなくす必要があります。
このチュートリアルでは、これらの不一致を調整する方法について説明します。
根本の問題は、ルーム衝突がセクターと同じ形状なので、それがまずいということです。

英語ではすべて「room collision」となっているので混乱してしまいます。
というのも、NGLEやTRLEで普通に床を4クリック上げると床から4クリックの高さに衝突が作成されます。
テクスチャに透明なものを貼れば、床を4クリック上げたとは理解しにくいでしょう。
これを旧部屋の衝突とでも呼べばいいでしょうか。
それとは違い、このドキュメントで、説明しているのはフリップエフェクトを使った衝突です。
コリジョントリガかフリップエフェクトで説明を統一してもらうともっとわかりやすくなったと思います。
ともかく、この日本語版では「衝突フリップエフェクト」「コリジョントリガ」「ルーム衝突」がNGLEから追加された衝突として読んでください。

StaticやMoveable上を歩く

image

ララがアイテムの上を歩くトリックは、以下の単純なルールに基づいています。
  1. アイテムから、衝突を取り除く。
    この操作はアイテムの種類によって異なります。アイテムがStaticの場合は、OCB値に4を追加します。
    アイテムがMoveableの場合は、アクショントリガを使用して衝突を無効にします。
    「Collision. Disable the collisions of <#>Moveable」
  2. ルーム衝突を新しい「Collision...」フリップエフェクトで追加します。

ルーム衝突の新しいフリップエフェクト

ルーム衝突の新しいフリップエフェクトは、目に見える形はそのままで、部屋の(目に見えない)衝突だけを上下に動かすことができます。

すべてのルーム衝突は、床や天井の衝突を上下に移動させることができますが、そのうちのいくつかは、スロープや三角形を通常または分割して作成することができます。

偽トリガ

ルーム衝突のフリップエフェクト(以下、コリジョントリガ)が真のトリガではないことを理解することが重要です。
これらのコリジョントリガの「偽の」性質は、次のようになります。

コリジョントリガの種類

コリジョントリガの種類

「Text to Find」フィールドの単語をスペースで区切って、トリガウィンドウの[Find <#>]ボタンの右側にある白いボックスに入力すると、フリップエフェクトのグループをすばやく見つけることができます。
画像
Text to Find
選択
image COLLISION FLOOR SLOPE

斜面の床

このトリガは床を上下に移動したり、床に傾斜を設定することができます。

Set North <&>Slope-Collision changing floor of (E)Clicks
Set South <&>Slope-Collision changing floor of (E)Clicks
Set East <&>Slope-Collision changing floor of (E)Clicks
Set West <&>Slope-Collision changing floor of (E)Clicks

画像には次のトリガが付いています。

; <#> : Collision. Set West <&>Slope-Collision changing floor of (E)Clicks
; <&> : Slope Collision with height= 2
; (E) : Increase floor collision by 4 clicks
image COLLISION TRI FLOOR

三角形の床

このトリガは床の特定のコーナーをさらに増加させ、三角形の頂点を得ることができます。

Set North-West <&>Tri-Collision changing floor of (E)Clicks
Set North-East <&>Tri-Collision changing floor of (E)Clicks
Set South-East <&>Tri-Collision changing floor of (E)Clicks
Set South-West <&>Tri-Collision changing floor of (E)Clicks

画像には次のトリガが付いています。

; <#> : Collision. Set North-East <&>Tri-Collision changing floor of (E)Clicks
; <&> : Triangular collision with height= 2
; (E) : Increase floor collision by 6 clicks
image COLLISION TRI SPLIT

分割三角形の床

このトリガは床を上下に移動できます。次に、分割線が共通の三角形に対して異なる位置にある分割された三角形を追加できます。

Set North-West <&>Tri-Split-Collision changing floor of (E)Clicks
Set North-East <&>Tri-Split-Collision changing floor of (E)Clicks
Set South-East <&>Tri-Split-Collision changing floor of (E)Clicks
Set South-West <&>Tri-Split-Collision changing floor of (E)Clicks

画像には次のトリガが付いています。

; <#> : Collision. Set North-West <&>Tri-Split-Collision changing floor of (E)Clicks
; <&> : Triangular Split collision with height= 3
; (E) : Increase floor collision by 5 clicks
image COLLISION CEILING SLOPE

傾斜付き天井

このトリガは天井を上下に移動し、希望の方向にさらに傾斜を加えます。

Set North <&>Ceiling-Slope-Collision changing ceiling of (E)Clicks
Set South <&>Ceiling-Slope-Collision changing ceiling of (E)Clicks
Set East <&>Ceiling-Slope-Collision changing ceiling of (E)Clicks
Set West <&>Ceiling-Slope-Collision changing ceiling of (E)Clicks

画像には次のトリガが付いています。

; <#> : Collision. Set North <&>Ceiling-Slope-Collision changing ceiling of (E)Clicks
; <&> : Slope Collision with height= 2
; (E) : Decrease ceiling collision by 8 clicks
image COLLISION TRI CEILING

三角を含む天井

このトリガは天井を上下に移動して特定のコーナーをさらに減少させ、三角形の頂点を得ることができます。

備考:天井衝突については、分割された三角形はありません。


Set North-West <&>Ceiling-Tri-Collision changing ceiling of (E)Clicks
Set North-East <&>Ceiling-Tri-Collision changing ceiling of (E)Clicks
Set South-West <&>Ceiling-Tri-Collision changing ceiling of (E)Clicks
Set South-East <&>Ceiling-Tri-Collision changing ceiling of (E)Clicks

画像には次のトリガが付いています。

; <#> : Collision. Set South-West <&>Ceiling-Tri-Collision changing ceiling of (E)Clicks
; <&> : Slope Collision with height= 2
; (E) : Decrease ceiling collision by 8 clicks
image COLLISION FLOOR

フラットフロア衝突

三角形や勾配なしで床を上下に移動したい場合は、床のコリジョントリガを選択し、三角形または傾き0クリックとして設定します。
このようにして、セクターの平坦性を保った床の動きだけが得られます。

例えば、左の画像に次のいずれかのトリガを付けることができます。


; <#> : Collision. Set East <&>Slope-Collision changing floor of (E)Clicks
; <&> : Slope Collision with height= 0
; (E) : Increase floor collision by 6 clicks

または:

; <#> : Collision. Set North-East <&>Tri-Collision changing floor of (E)Clicks
; <&> : Triangular collision with height= 0
; (E) : Increase floor collision by 6 clicks

実際には、斜面や三角の高さを0に設定した場合、向きは重要ではありません(東、北、南など)、三角形や斜面の場合はどちらも重要ではありません。
備考:この説明にもかかわらず、分割された三角形は内部構造のいくつかのフィールドを変更するので、フラット衝突として「分割された三角形」の衝突を使用することをお勧めします。
ですから、平らな衝突には斜面や共通の三角形を使ってみてください。


アイテムを衝突に適応させる

明らかにアイテムに衝突を適応させる方が良いのですが、ルーム衝突は「生」(不可視)であり、アイテムの形状にあうよう正確に変更することは簡単ではありません。
このことから、アイテムの形状や位置を少し変更して、ルーム衝突にあわせる方がいいでしょう。

image

上の画像Aは、サンプルレベルの最初の部屋のアイテムで、画像Bは、コリジョントリガで作成された衝突です。
石棺のように部屋の衝突と同じような形をしているものもありますが、ライオンやミイラの像は、似ていない形でルーム衝突を作り出しています。
例えばミイラに乗ると、ララは少し宙に浮かんでしまいます。
それとは違って、石棺はよく出来ています。1つのセクターで(正確には2セクター)で、高さは3クリックの衝突です。

代わりに、ライオンの像は少し不細工です。ララが飛び乗ると、滑り降ります。これは問題ないとしても、この滑り降りの開始時に、足がほぼ半分ライオンの爪に入るでしょう。これはマズイです。さらにマズイのは、ライオンがセクターの幅よりもスリムなので、ララはライオン側部の目に見えない壁にぶつかってしまいます。

いくつかの不一致を解決するためのヒント

これらの問題を見つけたら、次のような方法で修正することができます。

サンプルレベルのトリック

敵ジープについて見てみましょう。
その形状はルーム衝突(右下画像参照)に適応するように見えますが、敵ジープをプロジェクトに配置してみると、

image

敵ジープはセクターグリッドと正しく位置合わせされていません。(左上画像参照)
このような場合、問題を簡単に解決できます。アクショントリガを適用して正しい位置に移動するだけです。
; <#> : ANIMATING6                 ID:15     in sector:(2,4) of Room2
; <&> : Move. Move to east <#>animating for (E)units (one sector = 1024)
; (E) : Units =  632
ここでは、敵ジープはANIMATING6です。
このアクショントリガ(レベルの開始時に実行される)で敵ジープはセクターグリッドと一直線に並びます。しかし、もう一つ問題があります。

image

敵ジープは、2セクターの大きさがありません。(左上画像参照)
ですから左の斜面での衝突を試みましたが、このやり方でも、問題は明らかです。ララは敵ジープとの間に空間(隙間)が出来てしまいます。(右上画像参照)
この問題を解決するため、この空間(隙間)に適合する形状のアイテムを見つけました。
この小さなガードレールはあまりにも小さすぎて空間をカバーすることができなかったので、同じ位置に2つ配置し、空きスペースをなくするためフリップエフェクトを使って東に少し動かしました。(左下画像参照)
結果は、ご覧の通りです。

image

アイテムを移動してルーム衝突に揃える

image

サンプルプロジェクトでは、アイテムを移動してルーム衝突と同じ位置にする方法が2回使用されています。
上の画像は、何度か見たことがあるでしょう。 橋と東の巨人を動かします。なぜなら、橋が、セクターグリッドに揃っていないためです(理解するためNGLEでプロジェクトをみてください)。
上の画像では、ララの右の小さな柱も移動しています。元の位置(揃っていない位置)がどこであったかNGLEで見ることができます。

丸い衝突をシミュレートする

丸みのあるアイテムをルーム衝突で「塗りつぶす」と、多くの利点があります。通常のアイテムのコリジョンとは異なり、これらのアイテムを歩く、登る、またはモンキースイングすることができます。
欠点:これら丸みのあるアイテムは、ルーム衝突とは形状が異なります。そのためララは目に見えない壁にぶら下がる危険があります。

この問題を理解するには、石棺のアイテムを見てください。

image

上記の画像では、見えない衝突がある所が緑色で表示されています。
丸みのあるアイテムを、ルーム衝突で「塗りつぶす」とこれらの小さな領域が出来てしまいます。
そこでララがそれらの(欠けている)コーナーにぶら下がることを避けるために以下を試みました。
この特別なコリジョントリガを使用して、この目的を実現することができます。
; <#> : Collision. Set the <&>Side of closed sector as non-hangable from Lara
; <&> : West Side

サンプルを実際にプレイしてみてください。
ララは、実際の角では石棺にぶら下がりますが、丸みを帯びた側にぶら下がることはできません。

備考:他のコリジョントリガとは異なり、このトリガは実際のトリガであり、エクスポートすることができます。

最初の部屋を注意深く見ると、石棺の両側にコンディショントリガを置いて、角がないところでぶら下がりを禁止し、セクターの他の西側ではララがぶら下がります。

セクターを丸めるために

ルーム衝突ではセクターの形状を丸めることはできませんが、ララのぶら下がりを止めるため、そのセクターの三角形を上にして角を少し丸めることができます。
サンプルプロジェクトでは、小屋の四隅にセクターの三角形を上に移動して生成された斜めの衝突がある、小屋の例を見ることができます。

別の方法は、collis.wadファイル内にある衝突パネルを使用することです。下記参照。


衝突パネルのセット

衝突パネルは、レベル内に見えない衝突を設定するアイテムです。
それらが全く新しいというわけではありません。エレベーターの床でララの落下を避けるため、エレベーターの例でも衝突パネルを使用しました。
すべての形状をカバーするため、見えない壁を作成する、衝突パネルのフルセットがあります。
パネルには、他のアイテムとの重複を避けるための独自のスロット名が追加されました。
エンジンはこれらの衝突パネルに新しいCollisionプロシージャを適用して、高さ8クリックまでサポートしますが、一般的なCollisionプロシージャでは6クリック以上はうまく動作しません。

衝突パネルを歩いたり、登ったり、モンキースイングすることはできませんが、ルーム衝突や衝突パネルを使用してより詳細な垂直衝突を作成することができます。

可能なら見えない衝突を作成するのに、これらの2つの方法を統合して優先することです。ルーム衝突はCPUの計算に要する時間が少なく、一方衝突パネルはそれらの数を増やせないからです。英語のexagerateはexaggerate(誇張する)のミススペル

image

すべての衝突パネルの高さは8クリック(2セクター)ですが、下に移動させることで、高さを変更することもできます。
例えば、上の画像Aでは、1セクター(4クリック)の高さがあります。
最大8クリック(画像B)まで上に移動することができますが、望むなら、床の中を下に移動して1クリックの高さ(画像C)にすることもできます。

全幅のパネル

これらは全幅の4つのパネルです。
セクターの各クリックをカバーするパネルです。
PANEL_BORDER
PANEL_MIDDLE
PANEL_STRIP
PANEL_DIAGONAL
image image image image

リトルパネル

これらの小さなパネルは、配置するセクターの半分で、グリッド上でより詳細な形状を作成することができます。
PANEL_HALF_BORDER1
PANEL_HALF_BORDER2
PANEL_CORNER
PANEL_MIDDLE_CORNER
image image image image

衝突パネルに関するサンプル

image

バルコニーの衝突を作成するために2つのPANEL_CORNERを使用しています。
バルコニーが四角形になるのを避けるため、この丸い形に合わせて衝突を作っています。
衝突パネルを使った別の例は、巨人の部屋にあります。

image

橋を使用するには、半分の幅、すなわち半分のセクターの衝突にする必要があります。
ルーム衝突を使用してセクターの半分に衝突を作成する方法がないので、一連のPANEL_MIDDLEアイテムを使用して、橋にセクターの半分の衝突を作成しました。
プロジェクトを見ると、橋の他の側では、衝突パネルを使用していないことがわかります。なぜならこの場合、レベルのアイテムを節約し、ララがその方向に向かわないようにするため、天井の衝突を下に下げるルーム衝突を利用することが可能だからです。

それからPANEL_DIAGONALアイテムを使って、他の橋の上の他の半分にジャンプすることができないようにしました。そうしないと、トリックが発見され、ララは宙に浮いてしまいます。


新しい衝突に関する制限

一方でルーム衝突の「生」(不可視)の形状があり、他方で部屋の見えない衝突(旧部屋の衝突)は固定されています。ルーム衝突を使用してアイテムを移動することは出来ませんし、アイテムの衝突を失うこともあり、良くありません。
ララが移動するのに、アイテムを歩いたり登ったりできる衝突が絶対に必要な場合は、次のいずれかの方法を選択できます。