重くなるUnityを使う 24 「Shall we Move? - 引きずる2」
今回から見出しをつけます。(付けた方が見やすいですから)
今度は紙飛行機を引きずりましょう。
それにはキャラクターコントローラーを使います。
ただ、Unityのキャラクターコントローラーはマニュアルでも使わないほうがいい(?)とあるので、Scriptを作って制御します。
Scriptで紙飛行機を操作する(仮)
Script名はKamiplaControllなどにして(もちろんScriptファイル内で)、一応こんな感じにします。
解説
実はいろいろおかしいですがそれはこれから直すとして(一応自分で考えてやっているんで)説明します。
まずフィールドとしてspeed,rotationspeed,jumpheightを作ります。これはInspectorでもいじれます。そしていじれないフィールドにonGround,defspeedを作ります。
Start()内ではLogにコントロールを開始することを言っています。nameでObject名を呼べます。
コメントにしていますがCharactorControllerを使えます。今回は使っていません。
Update()内では独自メソッドを呼び出しています。Updateでは1フレームごとに呼び出せるので動く処理が出来ます。
startJump()はジャンプの処理をします。中ではonGroundがtrueかどうかとInputでスペースキーを押したかどうかをif#にしています。onGroundのboolと言うのは演算子でも使う形で、それが真か偽かを決めます。つまり、「それが当てはまる」か「当てはまらない」かということです。真はtrue、偽はfalseで表します。実はInput.GetKey(KeyCode)もbool値なんです。キーが押されたかtrueかfalseで表しています。ちなみに演算子はオペレータ(Operator)、代入される方(被演算子)はオペランド(Operand)とか言います。
またif#内には&&というのが有ります。これも演算子、特に条件演算子と言います。もともと&というのがANDと言い、「A & B」で「AとBを含む」という意味を持っています。((もっとわかりづらく言うとAの中のビット(2進数で表される言葉の表し方?かな)とBの中のビットを合わせて桁ごとに1があるかを確認してそれを合わせること
例:11 (bit : 0001011) & 21 (bit : 0010101) = 31 (bit : 0011111)))そして、&&と言うのは「A && B」で「AかつB」という意味です。((例:11 && 21 = 1 (bit : 0000001)))つまり、「Spaceキーを押していて、かつonGroundがtrueの時」ということです。ここで注意したいのは、if#の中でオペランドは、同じ形でなければいけないということです。(じゃないとエラーを出します)例えば、if (float aaa && bool isAAA);はエラーになります。また、if (float aaa && int bbb);もエラーになります。しかしキャストというのを使えば直ります。(キャストは今度説明します)
一旦これで終わりにします。また次回の記事で。(ほぼ見出しの意味なし & 後半めっちゃ赤い = ダメな記事 とかになる(&))