要求としては、以下の通りとする。
・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])で導いてもよい)
スクリプト上のスピードを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#)の基本である。
このプログラムが理解できれば、想像力次第でマシンが幾つもつくれるハズだ。
読者の参考になれば幸いである。
TESTで動かすと、こんな結果が得られるハズ。
こんな感じで、100[km/h]を超えるとBrakeアクションが発生し、RotatorSが
チョコチョコと停止していることが確認できる。
ちなみにノーマルCarのトップスピードは190[km/h]である。
ただ注意してもらいたいのは、スクリプトが実行される周期はゲーム中のfps
に依存する。また、スクリプトの実行速度の都合上、ユーザ入力に根負けしてしまう
ことがある。
例えば上記プログラムのif条件文を"absVel>5"にしても、トップスピードはある
一定速度以下まで下がらないハズだ。
以上がMachineCraftスクリプト機能(C#)の基本である。
このプログラムが理解できれば、想像力次第でマシンが幾つもつくれるハズだ。
読者の参考になれば幸いである。
0 件のコメント:
コメントを投稿