PCエンジン総合スレッド Part85 (91レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
63
(2): 09/20(土)16:29 ID:KIg/igil(1/7) AAS
狙い弾のお話

256方向だと一番端から端で±3ドットくらいズレるので判定が超小さい場合はすり抜けはあるかな?
512方向だとかなり正確に当たるね

けれど、そこまで正確なことは実際には必要なくて、二点間の角度を出すだけならレーダー法って言ってるルゴリズム使うと256バイトもあれシフトと加減算だけでばすごく正確に狙い打てますよ(その1/4サイズのテーブルでもそれなりに実用的)

1)画面サイズが256x240だとして、画面を16x16サイズに分割する(すると全画面が16x15=240のマスに分かれる)
2)それぞれのマスに左下から見て今のマスの目がどの角度にあたるか格納しておく
 (オセロや将棋ではなく囲碁をイメージ)
3)演算する二点の差の絶対値を計算する(AX,AYとし、1で用意したテーブルの範囲を超える場合はクリッピング)
4)AXとAYを16で割る(シフト演算)AY*16+AXの位置のレーダーテーブルを引く
  (つまりテーブルのインデックスをTIとすると TI=(AX>>4)&0fh + AY&0f0h)
5)目的の角度が取得できたので※正弦波テーブルから移動量を取得
※二点間の相対位置で第一〜第四象限に分かれるので証言に応じて角度値は軸で反転させる
 (または正弦波テーブルを引いてから符号を処理する)

安全地帯がなぜ生まれるかというと玉の動く方向(または狙う方向)が16種類・32種類・64種類と制限されているから。
256方向もあれば冒頭に書いたように自機と弾の判定矩形がともに1x1でもない限り当たってしまうから。
因みにゼビウスは16方向、グラディウスは16か32どっちだったかな?
16方向だと【テーブルすら不要】でシフトと加減算だけで正確に方向が出せますね
(ゼビウスがその手法なのかは不明)
67: 09/20(土)16:43 ID:KIg/igil(5/7) AAS
そうそう、>>63はそのまま適用すると実は0/90/180/270度の付近が若干不審になります
実際には半マスズレた形で適用するのですが、概念の説明だと単純にシフトだけして象限分けすると言った方が分かりやすいんですよね
実際に利用する際はその点ご注意ください
68
(1): 09/20(土)16:50 ID:MIiodhXU(2/2) AAS
>>63
ゼビウスは固定方向弾ではないな
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.015s