『 その6-6 』
■ 物を動かすという行為 自然界で物体が動くということは、実際に物が動いているのである(←無意味な日本語)。ところが、パソコンの中で物が動いているのはそう見えるだけで、実際に動いているわけではない(←あまりにもあたりまえ)。 前ページでTimer.Intervalの値を33にしてある。ということは、33msec(1秒に30回)の頻度でしか画面が書き換わらないということなのである。例えば秒速1メートルで移動している自動車があったとする。これを上記の条件で考えた場合、この自動車は1秒間に1メートル移動するわけだから、30回画面が書き換わると1メートル移動していると考えられる。ということは書き換えのたびに、1/30=0.033メートル座標を変えてやれば、そういったスピードで動いている自動車を表現できることになる。 タイマーイベント内で行う処理というのは、前回の状態から、今回の状態への変化を計算し、オブジェクトの座標や回転角度を設定し直すということなのである。 | ||||||||||
■ Mjob=0のプログラムコード Junctionと書いてあるタイトルロゴが回りながら近づいてくる長さは1~2秒で十分である。初期座標は TpZ=-50であるから、毎回1増やしていくと2秒弱でZ座標は0に到達する。これをプログラムで表すと
繰り返して書くが、「=」が数式内で使われている場合にその意味は「←」であって、左右が同じという意味ではない。「=」がif (....) Thenで使われている場合は、同じという意味になる。 次は「回る」である。これはZ軸回転であるからして、Zの値を毎回書き換えてやれば良い。
このようにして計算された座標や角度に従って図1の下の方に書かれている命令によって表示が行われるのである。 | ||||||||||
■ タイトルロゴのオブジェクトを止める このままでは、いつまでも回りながら手前方向に移動し続け、やがてカメラよりも手前に移動して何も表示されなくなってしまう。それは困るので、TpZの値が0になった時点で止めなければならない。そのためのコードが
| ||||||||||
■ Mjob=1のコード TpZの値が0になると、この部分が処理される。ここではZ座標の値はそのままに、Junctionオブジェクトが回転していない状態になるのを待つ。Zの回転角度を360で割って余りが0になるのを待てば良い。余りを求める演算子はModである。
| (図2) | |||||||||
■ 動作確認 動作確認して見よう。「だんだんあなたは3次元になる~」である。 |
その6-1 |
その6-2 |
その6-3 |
その6-4 |
その6-5 |
その6-6
『 サルのゲーム製作講座 』
目次 |
その 1 |
その 2 |
その 3 |
その 4 |
その 5 |
その 6 |
その 7 |
その 8 |
その 9 |
その 10 |
その 11
e-mail: sc_3da@magical2.egg.or.jp