車ゲーム

使用言語はHSPで、約400行のプログラム

はじめは、見下ろし視点で車の挙動を作りました。
アクセルキーを押していると徐々に加速し、やがて最高速度に達する。
速度があがると曲がりにくくなる。
アクセルキーを少し離していると曲がりやすくなる。
最高速度でカーブ中に、アクセルキーを一瞬離して下矢印キーを押すと、ドリフトモードになる。
ドリフトモード中はよく曲がる。
ドリフトモードを一定時間続けるか、ハンドル操作をしないでいると
ターボモードになる。
ターボモード中は最高速度より速い状態が一定時間続く。
通常、道路をはずれると速度が落ちるが、ドリフト中とターボ中は速度が落ちない。


後から調整した部分もありますが、だいたいこんな感じで作りました。
この時点で、自分がかつて作ったものとくらべて
格段に気持ちのいい動きができていたので、大満足でした。
コース一周のタイムを表示するようにして、最速を目指したりしました。


HSPといえば3Dも簡単に扱えるイメージがあったので、HSPの3D機能を調べました。
すると簡単に3D描画ができることがわかりました。
d3setcamでカメラの位置と向きを設定して
d3textureで地面の絵を貼った四角形面を描画させるだけです。
描画は簡単にできたのですが、
頂点の順番やらカメラの位置・角度、スケーリングなどの調整に
かなり手間取りました。勘と力技で切り抜けるのはつらかった。
次に車体の描画と遠くの山や空も表示するようにしました。
また、ウィンドウサイズを大きく(700*700)して迫力ある画面になりました。


ところが問題がありました。
地面の描画で、四角形面の分割数を指定するのですが
分割数が少ないと、テクスチャのゆがみがひどくなります。
特に視点の近くが壊滅的になります。
そこで分割数を大きくしたところ、CPUファンの音がします。
処理の余裕がなくなってCPU使用率がフルになったためです。
見た目にも、処理落ちでもっさりした動きになってしまいました。
そこで、処理に余裕を持たせるため、1フレームあたりの時間を増やしました。
あっ
車の挙動が・・・。
1フレームあたり1増えるカウンタを使って
100カウントで最高速に達する、などの設定を行っていたのですが
1フレームの時間が変わってしまったら、調整をやり直さなければなりません。
作り方がまずかった。
結局、調整をしなおしました。
過去の経験から、一度チューンした設定をいじってしまうと
何が何だかわからないまま突き進むような、泥沼状態に陥るかと思ったのですが
つくりが単純なためか、特に混乱もなく調整できました。


さて、せっかく擬似3D視点になったので、ジャンプ機能を追加しました。
黄色いジャンプ台に乗るとジャンプします。ジャンプでは壁を越えることができます。
また、着地の瞬間からドリフトモードになります。


最後にドリフト中の地面に跡が残るようにしました。
これを見るとドリフトの動きがわかりやすいので
さらに挙動の調整をしました。


たぶん完成、というかやりつくして飽きた。
ちなみに、見下ろし視点も残っていて、切り替え可能です。


スクリーンショット説明
・ドリフト中は車体が緑色になります
・?ブロックっぽいものはかざりです。
・ジャンプ中の絵は、撮影用に少し視点を遠めにして撮りました