厨房なおいらにプログラム教えるスレat GAMEDEV厨房なおいらにプログラム教えるスレ - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト240:名前は開発中のものです。 11/02/17 07:41:33 jsy99J9k.net 通りすがったが、面白そうなので首を突っ込んでみる。 DirectXや関連ライブラリの知識はないのでアルゴリズムの基本を地でいく。 >弾の軌道と位置はどういう式で x方向:横からの風は弾のx方向の速度に風速の値を加減すればOKっしょ。 y方向:弾が重力で落ちる→放物線→2次関数という連想を出来るようになるべし。 >当たり判定を突き抜けることがあるかもしれない 基本は、弾が今ある座標と次に移動する座標を結ぶ直線(線分)を考えて、 その間に障害物があるかを判定していく。(中学~高校レベルの代数幾何) 高速/低速の判断なく常時やっても問題ないだろう。(効率の良いやり方は パフォーマンスがネックになってから考えろ) でもこれはライブラリにありそうだな。(真偽はエライ人に聞いてくれ) 精進するでござる。ニンニン 241:社内ニート ◆OpY5DDvqSw 11/02/18 01:08:24 2Ex7ENec.net 通りすがりの方。今後ともよろしくお願いします。 弾の軌道は2時関数の放物線軌道といっていますが、 そこに時間の概念も加えないといけません。 弾が等速で動くわけではないということが重要です。 私が最初に考えていたのは、 x=0、y=0の座標を発射地点 発射角度を r (ラジアン) 発射パワーを p 重力は 1 cx1,cy1は時間(1ループ)ごとの増加座標 cx2,cy2は弾の存在位置です cx1=p*cos( r ); cy1=-p*sin( r ); while(以下、座標計算と表示を繰り返す) { cy1=cy1+1; //時間当たりの増加分、重力を加算し続ける cx2=cx1+cx2; cy2=cy1+cy2; //弾の存在位置、cx1,cy1の累積 x=cx2 , y=cy2 に弾を表示 } これに、重力と同じように風の影響も加えたものは以下のような結果になりました。 ttp://218.219.242.231/~kuroneko/imgboard1/img-box/img20110218003141.jpg もっときれいに滑らかに表示されるように調整します。 その上で問題になるのが、やはり地形との当たり判定です。 どこで当たるのか、どのタイミングで当たるのか。それが問題です。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch