F450

2005年03月02日の日記 ‣ 数学と物理。

古いデータが多く含まれているため、デッドリンクがあったり記事等を正しく表示できなかったりする可能性があります。また、これらの日記に対する新たなコメントやトラックバックは受け付けていません。予めご了承下さい。
2005年03月02日(水)の日記

数学と物理。

ゲームを作る初歩段階(脳内作業ONLY)で悩み中。
アクションゲームだとすると地面を設定するわけですが、
地面に立っている・着地するという概念は意外と複雑で、単純化する方法はないかと。
このままだと脳内作業で終わる気がする。
とりあえず練習にサンタスタックのOS Xアプリ版でも作ってみるかなぁ。
でも時間がなぁ。
2005/03/03(木) 14:27:18 (JST)

この日記へのコメント

  1. misudo
    場合分けして考えれば、たぶん意外に何とかなるかと。自分は、上下方向は、座標原点を画面左上にとって
    主人公の下部分の座標:Chara.bottom
    主人公の上下方向の速度:Chara.vy
    ブロックの上部分の座標:Block.top
    として、
    if(Chara.bottom<=Block.top&&Chara.bottom+Chara.vy>=Block.top){
    Chara.bottom=Block.top;
    Chara.vy=0;
    }
    とかやってました。横方向も同じかんじ。斜め上から入ってきた場合とかも考える必要があるので、実際はもう少し複雑ですが。これを、ループを上手く使って、すべてのブロックオブジェクトに対して計算します。

    ただ、主人公以外のキャラもブロックの上を歩かせると、当たり判定が指数関数的に増加してしまうので、実行してみてもたつく場合は、もうひと工夫する必要があるかも。いまやGHz時代なので、たいていのマシンでは大丈夫でしょうけど。
    2005/03/03(木) 17:01:13 (JST)
  2. misudo
    ごめん、細かいけど、
    if(Chara.bottom>=Block.top&&Chara.bottom-Chara.vy<=Block.top){
    Chara.bottom=Block.top;
    Chara.vy=0;
    }
    の方が多分よいです。こっちの方が、複数のブロックに当たったときの座標修正が楽。
    2005/03/03(木) 17:16:42 (JST)
  3. YOCKOW@管理人
    助言Thanx。とても役に立つ話です。助かります。
    当たり判定の数は、当たりそうなところだけ当たり判定をするという(セクター分け当たり判定とかいうヤツ?)ので少しは軽減できるかと目論み中。
    ただ、数ある処理の中で一番処理時間がかかるのは描画処理らしいのでなんともはや。
    で、純Cocoaでやろうとすると、スクリーンへの描画はNSViewでバッファとしてはNSImageを使うということになったり、
    キャラクターのオブジェクトはNSObjectの子孫クラスになったりで、
    それらを操ろうとすると、命令のほとんどはObjective-Cのメッセージ送信になるわけで、
    Cの関数実行に比べるとオーバーヘッドが気になるわけで。
    まぁ、案ずるより産むが易しという言葉を信じたいところ。
    2005/03/03(木) 17:46:33 (JST)

この日記へのトラックバック

この日記へのトラックバックはありません。