今回は、得られた値からモデルを動かしてみたい。
モデルを動かすにあたって、覚えておかなければいけない関数は以下の二つである。
これらもLua解説テキストから確認できる内容である。
StartAction関数は、ASSIGNで指定した(name)アクションをduration[f]だけ実行する。
durationが-1であれば、そのアクションはソフトウェアのクラッシュや後述の
EnsAction関数などの例外を除いて実行され続ける。
EndAction関数は、StartAction関数で動いているアクションを無条件で停止させる。
この関数の説明は上述のコードの通りなため割愛するが、筆者の確認だと
キー入力されているアクションはどうやら停止できていないらしい。もし違う場合
はコメント欄やTwitterで教えてもらえるとありがたい。
確認として、StartAction関数でモデルを永遠に前進させてみようと思う。
ただし、今回は単純化のために_sampleのCarをモデルとして扱いたい。
元ファイルに手を付けたくないため、Copyをお願いしたい。
Buildをクリックして、Build画面へと遷移し、TABキー→ASSIGNでアクションの名前
を確認したい。TABキー→SETUP→WheelにつながっているRotatorSで確認してもらって
もかまわない。
前者の方法であれば、こんな画面が出てくる。
"MoveF"というアクションを覚えてもらいたい。
これをStartAction関数の引数に指定する。
以上のスクリプトをCarモデルのコピーに適用して動かすと、
下の動画のような面白い状況になるかもしれない。
"MoveF"がずっと実行されている。結果としてEnemyに衝突した。
次はコメントアウトを消してEndAction関数を有効にしてみる。
結果の写真や動画は上げないが、全く動かないハズだ。
OnStart関数が実行された後にOnUpdate関数が走っているので、
StartAction関数が実行された直後にEndAction関数が実行される。
それ故に、アクション発生した直後にキャンセルされ、結果として
モデルが動かない。
一方で、Wキーを押してユーザから直接"MoveF"アクションを実行
してみると、普通に前進するハズだ。このことから、スクリプト外
のアクションに対してEndAction関数は動かないことが確認できる。
以上が、スクリプトからモデルを動かす方法である。
前回のトピックの内容を踏まえれば、いろいろな動きを作れると思う。
次回は、今までの"MachineCraftスクリプト機能(C#)の基本"
トピックの総まとめとして、速度をキープするCarを作ってみたい。
パラメータに応じてモデルを動かすということができれば、マシンクラフトの
スクリプトの書き方は一応理解できるハズ。
0 件のコメント:
コメントを投稿