takeyohのおぼえがき

気になったこと、試したことの記録です。

PITを設置するときの注意点(PITの枠が表示されない。表示されても一瞬で消える)

という事象に今日遭遇したのですが、速攻忘れそうなので覚書に残しておきます。

ことの発端は、ターンパイクのtrack modのカスタマイズで、PITの位置(オブジェクト名がAC_PIT_で始まるやつですね)を変更して、ゲームでテストをしてみたときのことです。
ゲームがスタートして、車を少し動かすと、PITの場所を示す赤い枠が表示されると思います。こういうやつです。

なんですが、一瞬表示されたらすぐに消えてしまって、それ以降PITとして認識されないという事象に出会ったわけです。
で、さっそくXに投げかけてみたところ、surfaces.iniが怪しいというご指摘が。
(あ~るさんありがとうございます!)
いろいろテストした結果をまとめるとこんな感じです。

1)対象となるレイアウトのdataフォルダにあるsurfaces.iniに定義されているSURFACEのセクションの中に、IS_PITLANE=1が含まれるものが必要。
2)1が設定されているSURFACEセクションのKEYに設定されている文字列がそのPITがある道路のオブジェクト名に含まれている必要がある。

です。私の例で具体的に書きます。今回ガソリンスタンドにPITを設置しようとしました。
まず、1の条件のため、このレイアウトのdata/surfaces.iniに下記のセクションを追加しました。

[SURFACE_3]
KEY=PIT
FRICTION=0.97
DAMPING=0
WAV=
WAV_PITCH=0
FF_EFFECT=NULL
DIRT_ADDITIVE=0
IS_VALID_TRACK=1
BLACK_FLAG_TIME=0
SIN_HEIGHT=0
SIN_LENGTH=0
IS_PITLANE=1
VIBRATION_GAIN=0
VIBRATION_LENGTH=0

IS_PITLANE=1がありますよね?でこのセクションに設定されたKEYは「PIT」です。
で、次にガソリンスタンドの床のオブジェクトの名前を、
1PIT_TURNPIKE_DAY_NML_・・・(長いので以下略)
という名前にしました。冒頭に1PIT_とつけています。
このPITという文字が入っているこの床オブジェクトはPITLANE扱いになるってことですね。
このオブジェクト(床・道路)の上にあるPIT設定(AC_PIT_)はPITの場所と認知されて、表示できるようになるということですね。
最初は普通の道路(ROAD)の上にAC_PIT_を設定したから、PITとして認識されず一瞬で消えてしまっていたのだと思います。

これで、ちゃんと車を移動しても、PITの表示が消えず、この枠に車を止めればピット作業ができるようになりました。

更に注意点が一つあります。)
surfaces.iniに設定されている各種SURFACEセクションにはそれぞれKEYが設定されています。
一方、オブジェクト名にこれらの中の複数の文字列が含まれる場合、(多分ですが)surfaces.iniで上に設定されたものから優先的にアサインされるようです。
例えば、道のROADと草のGRASSの順番で2つのKEYが存在したとして、オブジェクト名にROADとGRASSの両方が含まれている(順不同)と、そのオブジェクトはROADとして機能します。
今回、ROAD、PITの順でKEYを設定し、スタンドの床オブジェクトにROADとPITの両方の文字を含めたら、PITLANEとして認識できませんでした。
KEYの文字列が一つのオブジェクト内で複数含まれないように注意しましょう。

もう一つはおまけ情報。末梢神経さんに教えていただきました。ありがとうございます~!
通常ピットの作業はゲーム開始直後の設定画面で、PITの作業パターンを3種類設定できて、実際ピットに入ると、その中からどれかを自動で行われると思います。
ですが、下記のチェックをつけると、

PITに入った時、入れるガソリンや交換するタイヤを自分で指定するUIが表示されます。

レースなどタイム重視の時は自動の方が良いですが、スタンドで給油、みたいなシチュエーションであれば、手動の方が雰囲気出るかなと思います。

今回は以上です~!

/* -----codeの行番号----- */