ETS2 SimHubで自作ダッシュボードを作ってみる その3 文字情報を表示させる

どうも、け~えすです。

最初は画像関連の解説を行おうと思ったんですが、ちょっと予定を変更して文字情報の表示の解説を行います。 画像関連は次回になります。

今回は文字式のスピードメーターを作る方法をやっていきます。


デジタル風スピードメーターを作る

前回のタコメーターのダッシュボードをそのまま使って、今度は速度計を作っていきます。
タコメーターの右下が開いているので、その部分にデジタルっぽいフォントで速度計を追加してみます。

最初の状態はこんな感じです。

 速度計(予定)を取り付ける

 今回の速度系は文字を使うのでTEXTを使います。 左のボタンリストのTを押すとテキストが追加されます。

この状態になったと思います。 タコメーターについてた赤枠がTEXTに移動してます。 右側の緑枠で囲っている部分も見て欲しいのですが、タコメーターに青帯が付いてましたが、今はTextに移動しています。 

前回にも軽く解説しましたが、これがフォーカス移動になります。 この状態でTEXTの赤枠以外の所でタコメーターをマウスクリックすると、フォーカス移動が行われてタコメーターに赤枠が付きます。 右のパーツ表示のフォーカスもタコメーターになり、その下の設定項目欄がタコメーターの物になります。

前回の解説ではダッシュボードにはタコメーター1つだけでしたが、複数のパーツを使ってダッシュボードを作っていくので、フォーカスを目的の物に移動させる事をよく確認しましょう。

一旦タコメーターの右下にTextを移動させます。 これは任意の場所でOKです。
(とりあえずTop325 Left265の位置に移動してみました)
枠のサイズは100・100なので、Heightを70にしてちょっと横長の形にします。

こんなかんじになりました。 次に文字を変更します。
右下の大項目名Text内のTextに欄にTextと書かれてます。 ここの文字を変更すると、ダッシュボードの表示が変わります。

テストもかねて半角数字で000と入力します。

 なぜ000と入力したのかといいますと、ETS2の速度計だと3桁表示になります。 なので000と入力して、全体のバランスを見ようと思いました。 最終的には0に変更します。

位置が上下は中央揃え、左右は左寄せになってます。 上下そのままでもOKですが、左右は右寄せにします。
右寄せの理由ですが、この後の作業で速度表示の右側にkm/hの文字を置くつもりです。
左寄せにしてkm/hを置くと速度の数値とkm/hの間の空白の幅が速度によって微妙に変化します。
これが結構違和感を感じるので、速度表記を右に寄せて違和感を減らそうと思います。

数字や文字単体で置く場合はいいんですが、速度や水温表記で単位表記をする場合はこのあたりも気を付けると出来が良くなるかなーと思ってます。

右寄せのついでにフォントとフォントサイズも変更します。

まず右寄せですが、TextのHorizontalAlignmentのLeftをRightに変えます。
上下がおかしい場合はその下のVerticalAlignmentを変更します。 中央の場合は Centerを選択してください。

フォントはTextのFontから選択可能で、ここはSimHubで使えるフォント一覧になってます。
 LCDMonoってフォントがデジタルフォントっぽい感じなので、これを選択します。

その下にFontSizeがあるので、ここで文字の大きさを変更できます。  フォントサイズを60にしてみます。

こんな感じになりました。
これで3桁台の速度になっても、枠外に見切れることのない速度計として使えます。
TextのTextを000から0に戻します。

次に速度データを連動させたいので、Text項目のfxを押して関数を入れていきます。
関数の選択までは前回の記事を参照してください。
検索窓にspeedと入れると速度関連の物が一覧に出てきます。

前回の説明ではGameRawDataから選択してくださいと説明したのですが、速度に関してはRawDataでは正常に取得できるものがありません。
なので、GameData.NewData.SpeedKmhを選択して下さい。
関数名の通りキロ表記です。 ATS用やイギリス用にマイル表示をさせたい場合は、GameData.NewData.SpeedMphを使ってください。

目的の関数をダブルクリックして戻ってきたら、Result formatの部分が空白になっているので0を選択しておいてください。
基本的に問題ないはずですが、表示がおかしくならないようにおまじないを入れておきますw

これでメーター表示部分は完成です。

メーター関連の装飾をする

このままだと見た目が寂しいし、なんの表示かもわかりません。
とりあえず数字の右にkm/hを入れてみます。

これも左のボタンメニューでTEXTを選びます。 次に表記をKm/hに変えます。

フォントサイズが大きすぎて見切れてます。 速度計の文字の大きさを考えるともっと小さくした方がいいと思いますので、フォントサイズを20にします。 そして位置を調整します。

アイテムのラベル表示でkm/hが見にくいですね。 これが鬱陶しい人はタコメーターのちょっと上にHide labelesってボタンがありますので、それを押してください。 トグル切り替えでパーツ名(ラベル)表記をON/OFF出来ます。

自分はTop363 Left370にしました。 マウスだと細かい移動が出来ないので、ある程度マウスで位置を決めた後、TopかLeftをクリックして右に上下の矢印を出して、それで1ドットずつ移動させると簡単に調整できると思います。


次にスピードメーターの表示に関してです。
このままテストして頂くと分かるのですが、エンジンがOFFの状態でも速度計の数字は表示されたままです。
その横のkm/hは大抵メーターにプリントされているのでいいんですが、数字は普通エンジンON(またはACCがON)じゃないと表示されませんよね?
なので、エンジンが掛かったら表示されるようにします。

速度計の方にフォーカスを当てて、 GeneralのVisibleに関数を入れます。 Visibleの所のfxを押して関数選択画面に移動してください。
electricで検索するとGameRawData.Drivertrain.ElectricEnabledが1つだけ出てくると思いますので、これをダブルクリックして割り当てましょう。

この項目はトラックに電源が入った状態を感知するもので、エンジンを掛けたら電気が入るのでこれがTrueになります。GeneralのVisitは表示のON/OFFをする部分なので、これに連動します。

マニュアル車でミスしてエンストしたり、またダメージで勝手にエンストした場合でも、トラックの電源は入ったままなので表示は維持されます。
自分でエンジンOFFした場合は電源も切れるので表示は消えます。
エンジンON/OFFで制御するとエンストした時に表示が消えてしまうので、こちらを使った方が自然だと思います。
これは他のパーツでも使う手法なんで是非覚えておいてください。

後は実際にテストしてみてください。 エンジンON/OFFで表示がどう変わるかと、速度が正常に表示されているかがチェック対象ですね。

その他の文字情報について & 時計の作り方

今回は速度表示を例に作りましたが、文字・数字であればこのパーツですべて扱えます。
水温・油音・エア圧は当然ですし、配達先の都市名・会社名や貨物名も表示可能です。
ちょっとコツが要りますが、時間表示も簡単に出来ます。

但し、時計だけはちょっと面倒でした。
普通にTime系の関数を使うと、ゲーム内時間ではなく自分のPCの時間を表示するんです。
リアルの時間を表示されても正直困るw
最初に紹介したETS2用のダッシュボードスキン2種も、時計についてはリアルタイムを表示します。

作り方ですが、関数に [DataCorePlugin.GameRawData.TimeAbsolute]を使います。これでゲーム内時間を取得できるのですが、データフォーマットが「日数:時:分:秒」になっているので分かりにくいんですよね。
こいつを時:分で表示させればいいので、関数を選択した後にResult formatにhh:mmと入れたらresultがErrorになります。
どうも:がコマンド系で使われているみたいで、これ単体だとダメっぽいです。 :の前に半角のバックスラッシュ(全角だと\ 半角のバックスラッシュは日本語フォントに入ってないのでこのBlogでは表示できないんです)を入れると表示が出来ました。

¥キーを押すとSimHubでは半角バックスラッシュになりますので、日本語キーボードのキーだとhh\:mmと入力するとこんな感じになると思います。

こんな感じでResult formatの項目は自分で設定が出来るので、例えばhhとだけ入れていれば時間部分のみ表示が出来ます。

例えば配達期限時間の関数を使ってResult formatでhhのみにしたら時間部分だけ表示できます。
あらかじめテキストで「配送期限:  日  時間  分」って感じで作っておいて、外は空白の部分に先程のhhのみの関数を上においてあげれば、配送期限時間表示の出来上がりとなります。

余談ですが、配達先都市名・同企業名・貨物名・配達期限については、配送が終わっても表示されたままになります。 新しく荷物を取ったら更新されますが、納品した後はゲームを終了しない限り前のデータが残ったままになります。 これはDLL側の仕様っぽいです。

最後に

詰め込み感満載の解説ですみません。 ですが、他のパーツでも使う手法も書いてますので、是非すべてお読みいただけたらと思います。

ETS2の場合は目的地や配送期限の表示に使いますが、レースゲーム用のダッシュボードでもラップタイムとかトップとのビハインドの表示とかに使うので、かなり使うことの多いパーツだと思います。

次回は画像を使ってインジケーターランプの表示を行います。


スポンサーリンク