2017年3月16日木曜日

MachineCraftスクリプト機能(C#)の基本(総まとめ):スピードキープ車を作ろう

今までのトピックの総まとめとして、ある一定スピードを維持する車を作る。

要求としては、以下の通りとする。
・Carモデルを使用
・100[km/h]前後で速度を維持する
・キーボード入力から自動車を走行させる。

3番目の要求が前回トピックの「キー入力はスクリプトから受け付けない~」
に抵触するような気がするが、方法はある。
StartActionの「(キー割り当ては必須ではない)」というルールを使ってスクリプト
専用のブレーキアクションを作ってしまえばいい。

前回CarモデルのコピーのASSIGN画面を開いてアクション"Brake"を登録する。

これをそれぞれのWheelにつながっている4つのRotatorSに登録する。
Brakeアクションのパラメータは0(RotatorSを停止)にする。


あとはスクリプトだが、ここで重要なのがマシクラ基本(その4)で述べた
スクリプト中で使われる関数の出力はゲームにて表示されるパラメータ
と一致するとは限らない」という点。
計器上の値がそのまま使えないのだから、計器上の100[km/h]のときの
スクリプト上のスピードをPrintやLogで確認すればいい。
(勿論、100[km/h]×(スクリプト上の速度[-]/計器上の速度[km/h])で導いてもよい)

筆者の環境(Ver. 232a)では、スクリプト上のスピードは27だった。
以下にスピードキープ車のスクリプトを乗せる。

スクリプト上のUserNameは必ず自分のものに変えておくこと。


TESTで動かすと、こんな結果が得られるハズ。
こんな感じで、100[km/h]を超えるとBrakeアクションが発生し、RotatorS
チョコチョコと停止していることが確認できる。
ちなみにノーマルCarのトップスピードは190[km/h]である。

ただ注意してもらいたいのは、スクリプトが実行される周期はゲーム中のfps
に依存する。また、スクリプトの実行速度の都合上、ユーザ入力に根負けしてしまう
ことがある。

例えば上記プログラムのif条件文を"absVel>5"にしても、トップスピードはある
一定速度以下まで下がらないハズだ。

以上がMachineCraftスクリプト機能(C#)の基本である。
このプログラムが理解できれば、想像力次第でマシンが幾つもつくれるハズだ。

読者の参考になれば幸いである。

0 件のコメント:

コメントを投稿