弾幕STGの当たり判定の大きさってどうなんでしょう?
例えば東方ですね。霊夢は当たり判定が小さいとか言いますが、プレイした感じじゃ全然わからん(^_^;)
具体的に何ピクセルなんでしょう。
ちなみに我らがFifthCannonは、(自重しろ)普段は半径25ピクセルです。ただし火事場時は半径20ピクセルに縮まります。
弾幕のおまけでは、半径5ピクセルですが、東方の2倍くらい大きい感じがします。
といっても、弾の大きさもからんでくるのでよくわからぬ。ちなみに弾は全て2ピクセルの大きさです。全て同じなのは、めんどかったからです。(オイ
いやだって、最初は弾幕つくる予定じゃなかったんですよ?
こんなことなら始めっから弾幕STG作ればよかったと思う今日このごろ。
当たり判定を気にするのは、すり抜けがコワイからです。
例えば自機の当たり判定の大きさが3ピクセル、弾の当たり判定の大きさが2ピクセルだったとします。
直前のフレームでギリギリまで近づいていたとしたら、相対速度が10以上あると次フレームで衝突せずにすり抜ける計算になります。
自機は毎フレーム4ピクセルで動いていたら、弾は毎フレーム6ピクセル以上(まあまあ速い)です。
これはゲーム的にマズイ気がします。
・・・
ホントにそうか?(ここまで言っておいて何を言ってるんだ)
嘘避けや神回避が当たり前の東方なら、これぐらいあってもよさそうな気がしてきた。
すり抜けたって、「ああ、ギリギリかわしたんだ。」ってなる気がします。だって弾速いですから。
それに100%すり抜けられるわけではありません。さっきの例はギリギリまで近づいてギリギリすり抜けるわけですから。
あと弾源避けってすり抜けを利用してるのでは?
はい。とりあえず気にするほどのことではないということに落ち着きました。
何か意見があったら言っていただきたいです。
もっと重要なことがあります。
弾の列についてです。
軌道は同じだけど、速度が違うので魅せにも便利なあれです。
これの特徴は、1つ目が当たらないと次から来る弾も当たらないというところです。
ここで思ったのは、当たり判定って連続的ではないですよね。1フレームおきにしかできません。
そうすると、もしギリギリ弾のコースが当たっていても、弾が速いせいで当たらないということが起きます。(さっきの話に近いです)
それはいいのです。
問題は、そしたら次に来る弾が当たるんじゃね?ということです。
それも次に来る弾は遅いので、連続的な場合(言わば長方形判定)にギリギリ当たっていると、最初の弾は当たらないのに、次の弾が当たるという謎の現象が起きるのではと思ったわけです。
私が思った解決方法は、0.5フレームの当たり判定をしてやることです。
全ての弾の座標およびプレイヤーの座標を計算して、当たり判定をそのフレームと0.5フレーム前とで2回計算してやればいんじゃね?という。
これならすり抜けも格段に起きにくくなるはずです。
ただし問題点は、もちろん処理が重くなることと、弾の軌道が特殊だと簡単には厳密に座標が判定できないことです。
例えば加速弾なんかめんどくさそうです。単純に前と今の座標の半分をとればいいわけではありませんから。
さて、どうしたものか。
「ちゃんと避けないお前が悪い」で済ませて果たしていいものか・・・
当たり判定はどんなもん?
Re: 当たり判定はどんなもん?
境界を円と見るなら連続的な当たり判定も低コストで可能だと思います。
どちらかの物体の(例えば自機の)相対座標系にもう一方の物体を移して
移した物体の円の中心が次のフレームまでに描く線分と、自分の中心の(自機の半径+玉の半径)の円との交差判定に持ち込めばよいです。
線分と円の交差判定は、大抵の場合数回の掛け算と一回の条件式で判定が終了します
どちらかの物体の(例えば自機の)相対座標系にもう一方の物体を移して
移した物体の円の中心が次のフレームまでに描く線分と、自分の中心の(自機の半径+玉の半径)の円との交差判定に持ち込めばよいです。
線分と円の交差判定は、大抵の場合数回の掛け算と一回の条件式で判定が終了します
Re: 当たり判定はどんなもん?
なるほど・・・。
線分と自機の半径+弾の半径という発想はなかったです・・・
とても参考になりました!ありがとうございます。
線分と自機の半径+弾の半径という発想はなかったです・・・
とても参考になりました!ありがとうございます。