『 その10-3 』
■ タイマーイベント ![]() タイマーイベントが発生した場合のコードは右のようになる。簡単なので説明はしない。 |
■ Gameというサブルーチン ここでは、ブロックが動く処理、ボールが動く処理、ゲートが裏返る処理の3種類が必要になる。まずはブロックの処理を作る。これらサブルーチンは、JmainBに置いてもかまわないのだが、私はJmainF/Generalに配置した。![]()
(CBlk, _ (Ex - 3) * 2, 0, _ (Ez - 4) * 2 + Mjob * 2 / 3) Mjob * 2 / 3は、ブロックはMjobの値によって、3回のタイマーイベントを経て移動が終了するための計算式である。 ![]() なぜこのようにブロックを目的位置まで段階的に移動させるかというと、瞬間移動させるとブロックが動いているのではなく、空白が動いているように見えてしまうからである。大昔にメガドライブ用に作った元祖Junctionはそうであったのだが、スムーズに動かすと見栄えは良くなるものの、今度はプレイしていて動きが重く感じるようになってしまう。ここらへんのバランスがゲーム製作の難しいところで、例えば物が動くということは本来であれば絶対に慣性重量からは逃れられないわけで、考慮に入れた方が動きはリアルになるのだが、格闘ゲームなどの場合これを考慮に入れると今度は、「動きが重い」とか、「爽快感がない」などと非難される操作性になってしまう。難しい問題である。ということで、今回はその間をとって3段階で移動は終了することにしてあったりする。
以下同様ということで、ブロックの移動方向が違う場合のコードを下に示すが、最後の方のMjob=Mjob-1という部分に注意すること。 ![]() |
■ 動作チェック |
その 10 -1 |
その 10-2 |
その 10-3 |
その 10-4 |
その 10-5 |
その 10-6 |
その 10-7
『 サルのゲーム製作講座 』
目次 |
その 1 |
その 2 |
その 3 |
その 4 |
その 5 |
その 6 |
その 7 |
その 8 |
その 9 |
その 10 |
その 11
e-mail: sc_3da@magical2.egg.or.jp