『 その7-2 』
■ 等加速度運動 私 : 「加速度って何だ?」 レンダラー担当 D氏 : 「そりゃー速度の微分ですよ。」 難しい表現なのでボツ。 モデラー担当 I氏 : 「そんな基礎から説明するんですか?」 逆に質問されてしまった。 AVチーム O嬢(アダルトビデオではない) 「加速の度合い。」 そのままじゃ~ ついでにマニラへ電話してモーションエディタ担当 L氏: 「Hahaha... 」 という具合でピンと来ない説明ばかりである。やはり他人に頼っても良い結果は生まれない。ということなので私の言葉で説明する。 重力加速度は 9.8というのは良く耳にする数値である。単位は m/sec だったりする。
ではこれを数式化してみよう。その前にもう一度上の表を確認してもらいたい。3秒後の速度である。29.4m/sec という速度になっている。秒速では実感がわかないので、時速に直してみよう。3600秒で1時間なわけだから、
それから、Y座標系では上がプラスの方向なわけだから、下方向への加速度というのはマイナスの加速という事になる。
Bpy = Bpy + BYspeed 1行目では加速度(-0.1)を元にして玉のY方向の速度を計算し、2行目でY座標を計算している。 ■ 弾性衝突 玉が床に到達すると、跳ね返ったりする。落下してきた玉が突然上方向に動き出すわけだから、速度の符号を反転させてやれば良い。完全に反転する(-1を掛ける)という事は跳ね返る直前と直後の速度の絶対値が同じということで、これは完全弾性衝突とか呼ばれている。本来床で跳ね返った玉は同じ高さまでは戻ってこない。衝突時に玉や床が変形したり、熱になったり音になったりでエネルギーが失われるからである。だから、もう少し正確に物理現象をシミュレートしたいのであれば、掛ける数を-1ではなく-0.8程度にしてやれば良いのかもしれない。サンプルのゲームのタイトルシーンを見てほしい。玉の跳ね返る高さが少しずつ低くなっている。ところがコード内ではあくまでも-1を掛けている。ではなぜこういった事がおこるのであろう。これはまさにゲーム屋特有の「ごまかし」もしくは「とりあえず動いてるから良いんでないべか(北海道弁)。」である。この部分のコードは次のようになる。床の高さはY = -2.0としてある。
Bpy = -2: BYspeed = -BYspeed Else ![]() ■ Mjob=1のコードを完成させる ![]() 2つめのif文は玉が右端に行ったときに左側へ動くようにXの速度を反転させている。 3つめのif文は玉が左端まで戻ってきたときにタイトルロゴを画面奥へ移動して、玉を見えない場所に移動し、Mjobを0にしている。これで、次にタイマーイベントが発生したときには、オープニング画面が再び最初から表示されるのである。 |
その7-1 |
その7-2 |
その7-3 |
その7-4 |
その7-5 |
その7-6
『 サルのゲーム製作講座 』
目次 |
その 1 |
その 2 |
その 3 |
その 4 |
その 5 |
その 6 |
その 7 |
その 8 |
その 9 |
その 10 |
その 11
e-mail: sc_3da@magical2.egg.or.jp