randomize

2014/09/12

Arma3スクリプティング講座その4:スクリプトの基本

第四回。今回は四則演算とその他数字の操作、条件式を学びましょう。


その前に、前回の実習の答え。プレイヤーユニットの方位を90、つまり真東に設定する、ということです。

はい、本題に参りましょう。Arma3には当然数字の操作が可能です。四則演算他基本はそろっています。+が加算、-が減算、*が乗算、/が除算です。
まずは次のスクリプトを見てみましょう。
hint str ((1+2*(5/3))-3)
特に意味も無く四則演算が全てそろっている式を組みました。答えは1.3333…のはずです。
ちなみにゼロ除算をしようとするとゼロ除算だハゲって怒られてスクリプトが停止するだけなので、別にArma3が落ちたりはしません。
次に演算の使用例を見てみましょう。
myValue = 5*5
myValueには25が格納されます。こんな風に使うことが出来ます。
さて、今度は次のスクリプトを動かしてみてください。
if (3*2 == 10) then {hint "3*2"}


何も表示されませんね。まずはifスクリプトの解説から紐解いていきましょう。
ifというのはピンとくる人とこない人に分かれそうな言葉ですが、文字通り条件式です。
ifの直後の括弧の中身がtrueであったらthenの直後のスクリプトが動きます。
そして==とは、=と良く似ていますが全く別物です。=は代入を示すスクリプトであるのに対し、==は右辺と左辺が等しいかどうかを判断してくれるスクリプトです。等しければtrue、等しくなければfalseを返してきます。
当然、3×2の答えは当然10ではないので、falseが返ってきます。つまりhint "3*2"は動きません。
では次のスクリプトを動かしてみてください。
if (this == player) then {hint "This unit is player"} else {hint "This unit isn't player"}
This unit is playerと表示されたあなた、プレイヤー以外でこのスクリプトを動かしてみてください。
This unit isn't playerと表示されたあなた、プレイヤーでこのスクリプトを動かしてみてください。
どうです?結果が変わったでしょうか。今回のif文に入っている条件はthisがプレイヤーであるかどうかを判断しています。また、elseは条件がfalseであったときに実行されます。
プレイヤーでこの式を実行した場合、thisとplayerは等しいのでthenの式、hint "This unit is player"が実行されます。 AIでこの式を実行した場合、thisとplayerは等しくないのでelseの式、hint "This unit isn't player"が実行されます。
また、if文などに使えるスクリプトはもう少しあります。特に使う奴だけ解説してみます。 or文は文字通りの意味です。orの右辺と左辺、どちらかがtrueであればtrueを返し、全てfalseであればfalseを返してきます。 また、and文は右辺と左辺、全てtrueであればtrueを返し、一つでもfalseがあればfalseを返してきます。 つまり、
true or false と true and true
はtrueで、
false or false と true and false
はfalseです。 スクリプトの基本編は今回でお終い(のつもり)。次回からはスクリプトファイルを使用した高度なスクリプトを学んでいきましょう。

 【実習】次のスクリプトを書いてみてください。間違っていたらやり直してみてください。
プレイヤーと、man01が両方生きているとき、プレイヤーの方角を表示、そうでなければプレイヤーのY座標を表示するスクリプト。なお、ユニットが生存していることを取得するスクリプトはalive、方角を取得するスクリプトはgetDir
 

0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。