タグ

ブックマーク / gemma.hatenadiary.org (3)

  • マリオのジャンプ実装法とVerlet積分 - Gemmaの日記

    (追記)JavaScriptで実装してみました 昔、何かの雑誌*1でマリオのジャンプの実装法を見た覚えがあって、あの放物線運動は、 マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて、 マリオの前回の座標を保存しておいて座標を計算しているんだそうです。 y_temp = Mario.y; Mario.y += (Mario.y - Mario.y_prev) + F; Mario.y_prev = y_temp;Fはその瞬間の力で、ジャンプの瞬間はF=10にして、空中ではF=-1にします。 するとこんな放物線になります。 [0,10,19, 27, 34, 40, 45, 49, 52, 54, 55, 55, 54, 52, 49, 45, 40, 34, 27, 19, 10, 0] 加減算しか使わないので、非常に高速にできたと。 これがVerlet積分に似ているなと思った

    マリオのジャンプ実装法とVerlet積分 - Gemmaの日記
  • マリオのジャンプ実装法とVerlet積分(実践編) - Gemmaの日記

    前回の続き 実際にやってみました。(Canvas要素を使っているのでFirefoxでどうぞ) http://eva-lu-ator.net/~gemma/geocities/jsmario/jsmario.html マリオのようにジャンプで放物線運動をするゲームを作るとき、 たいていは、座標と速度を使って物理計算すると思います。これはEuler法といいます。 Verlet法では、座標と、前回の座標を使って計算します。つまり、速度を記憶しません。 Verlet法では、座標だけ扱えばすむので、壁にめりこんじゃいけないといった条件を簡単に書くことができます。 単に座標を、壁の直前にするだけでいいです。 ネタ元はCowboy Programming >> Blob Physicsです。 今回のコードの肝は以下の部分です。衝突判定がすっきり書けました。 //Verlet法 var y_temp =

  • 2008-04-02

    主人公は高校生、クラスで目立たないが、実はLispハッカー。 明治時代から代々続くプログラマの家系。 ご先祖様は、チャールズ・バベッジと競いあったり、フォン・ノイマンに「やつは天才だった」と言わしめたり。 彼の家系は、その類まれなハッキング能力から、時の権力者や、軍や、国際大企業や、秘密結社から狙われている。 彼の祖父は、戦時中に、現代でいう楕円曲線暗号を、時代に先駆け50年早く編み出していたが、その秘密を守るため軍に殺された。 彼の父親は、2000年問題で核ミサイルを発射しかけた国防総省のメインコンピュータのプログラムを修正したが、放射線に晒されて、命を落とした。 プログラミングの秘伝を記した巻物は一子相伝。 幼少のころから父親にプログラミングを叩き込まれる。 第1話 高校の文化祭で開かれた、タイピングコンテスト。 彼は決勝戦に進出。 「こんなヘンピな高校でも、なかなかのやつがいるもんじ

    2008-04-02
  • 1