Re: 東方弾幕風のバグ ( No.21 ) |
- 日時: 2011/01/18 22:52
- 名前: danmaku
- 組み込みの弾の当たり判定についてなのですが、
弾の画像と、その弾の当たり判定がどこにあるかを示した白黒の画像と、二種類の画像を読み込み、 一ドット単位で弾の当たり判定をつけれるようにする機能を実装していただきたいのですが、 それは無理でしょうか?
もしかしたら、自分がよく理解していないために できないだけのことかもしれません。 どうかご検討よろしくお願いします。
|
Re: 東方弾幕風のバグ ( No.22 ) |
- 日時: 2011/01/18 22:59
- 名前: danmaku
- 連投すいません。
間違って書いてしまったので修正します。 >>21の一行目 × 組み込みの弾 ○ 追加した弾画像
ご迷惑かけてしまってすいません。
|
Re: 東方弾幕風のバグ・要望 ( No.23 ) |
- 日時: 2011/01/22 21:01
- 名前: memo
- 初めまして。
最近になってph3に手を出し始めました。自由度増し増しで楽しいですね。
早速ですが1つ要望を… 敵スクリプトを終了させてもエフェクトオブジェクトは消えなくなりましたが、 消し損ねるといつまでも残ってしまうようなので、一括で消せる手段があるとありがたいです。
それともう1つ、モーションブラーのサンプルE1についてですが、 ブラー中はデフォ自機ボム発動時の震動が無視され(優先度を下げても駄目なようでした)、 「//前フレームを現フレームに半透明描画」前後の括弧内をコメントアウトした状態でも 加算合成のエフェクトが多重に描画されてしまいました。
処理が理解できていないだけでしたらゴメンなさい。
|
Re: 東方弾幕風のバグ・要望 ( No.24 ) |
- 日時: 2011/01/23 22:03
- 名前: mkm
- >>21
>danmakuさん >弾の画像と、その弾の当たり判定がどこにあるかを示した白黒の画像と、二種類の画像を読み込み、 >一ドット単位で弾の当たり判定をつけれるようにする機能 高速に当たり判定を処理するロジックを思いつかないので現状難しいです。 ただ、追加した弾画像のShotDataに collision(x, y, r) collision(x, y, r) と当たり判定を複数書くことで、より細かい弾の判定を行えるようにしようと思っています。 (実は内部的には実装だけは行っているのですが、1度もためしていないため多分動作しません。。。)
>>23 >memoさん はじめまして。
>最近になってph3に手を出し始めました。自由度増し増しで楽しいですね。 まだまだわかりづらいものを使っていただきありがとうございます。
>敵スクリプトを終了させてもエフェクトオブジェクトは消えなくなりましたが、 >消し損ねるといつまでも残ってしまうようなので、一括で消せる手段があるとありがたいです。 スクリプト終了時に、スクリプトが作成したオブジェクトを自動で消すような設定をつけようと思います。
>それともう1つ、モーションブラーのサンプルE1についてですが、 >ブラー中はデフォ自機ボム発動時の震動が無視され(優先度を下げても駄目なようでした)、 ご指摘ありがとうございます。 原因はまだ調べていないのですが、分かり次第修正します。
|
Re: 東方弾幕風のバグ・要望 ( No.25 ) |
- 日時: 2011/01/28 20:51
- 名前: danmaku
- ご返信ありがとうございます。
また要望なのですが、 ・collision(x, y, r)で円形の当たり判定を設定できるということについてですが、 弾画像の範囲を指定するrect = (0,0,32,32) のように当たり判定も四角形で設定できるようにもしていただきたいです。
・敵の弾を回収したときの星アイテムの点数についても設定できるようにしていただきたいです。
長文&自己中な要望ばかりですいません。
|
Re: 東方弾幕風のバグ・要望 ( No.26 ) |
- 日時: 2011/01/31 00:43
- 名前: mkm
- >>25
>danmakuさん ご意見ありがとうございます。
>・collision(x, y, r)で円形の当たり判定を設定できるということについてですが、 >弾画像の範囲を指定するrect = (0,0,32,32) のように当たり判定も四角形で設定できるようにもしていただきたいです。 なるべく円−円で当たり判定を実装しているのは、判定のコストが小さいためです。 通常の弾に四角形(回転有り)を使用できるようにすると、 自機(円)や他の弾(これも通常は円)との 当たり判定のコストがかなり増大しそうです。 ・円(Ax, Ay, Ar)−円(Bx, By, Br) の当たり判定 (Bx-Ax)^2 + (By-Ay)^2 <= (Ar + Br)^2 おそらく多くのSTGで採用しています。
・円(Ax, Ay, Ar)−四角形(Bx1, By1, Bx2, By2) の当たり判定 1) 弾は回転するので四角形の座標を回転させます。(アフィン変換) 四角形は幅のある線分と同じです。 (Lx1, Ly1)-(Lx2, Ly2)の線分で幅をwidthとします。 2) 線分の長さを求めます。 ((Lx2-Lx1)^2 + (Ly2-Ly1)^2)^0.5 3) 線分の単位ベクトルを求めます。 (線分の単位ベクトルx) = (Lx2-Lx1) / (線分の長さ) (線分の単位ベクトルy) = (Ly2-Ly1) / (線分の長さ) 4) 線分の単位ベクトルと始点から円の中心までベクトルの内積を求めます。 (Ax-Lx1)*(線分の単位ベクトルx) + (Ay-Ly1)*(線分の単位ベクトルy) 5) 円の中心から線分までの最短距離ベクトルを求めます。 (最短距離ベクトルx) = (Ax-Lx1) - (線分の単位ベクトルx) * (4:内積) (最短距離ベクトルy) = (Ay-Ly1) - (線分の単位ベクトルy) * (4:内積) 6) 当たり判定を調べます。 (最短距離ベクトルx)^2 + (最短距離ベクトルy)^2 <= (Ar + width)^2
・四角形(Ax1, Ay1, Ax2, Ay2)−四角形(Bx1, By1, Bx2, By2) の当たり判定 省略しますが、回転ありの場合これも重いです。
上記のように当たり判定1つに対する計算量がかなり増えると思います。 (1つの弾に複数の判定を登録すると、その分もすべて計算が必要です。)
と記述した後思ったのですが、最近のCPUは性能がよいですし どうせ空間分割してから当たり判定を計算するので そこまで考えなくてもよいのでしょうか・・・ (実装してみないとよくわからないです。。。)
>・敵の弾を回収したときの星アイテムの点数についても設定できるようにしていただきたいです。 アイテム系は自由度をましたいのですが、なかなかよい実装を思いつかないので保留しています。
|
Re: 東方弾幕風のバグ・要望 ( No.27 ) |
- 日時: 2011/02/06 15:13
- 名前: ガラス草
- ずいぶんと返信が遅れました。すいません。
>>17 >これは > /script/aaa/bbb.txt にあるスクリプトが > /script/lib/ccc.txt を#includeしていた場合に、 > 「../lib/」を取得するといったことでしょうか?
はい、まったくもってその通りです。一部組み込みで画像を用意しておきたいライブラリがあるので…。
それと、弾画像・レーザー画像のちらつきというか、画像表示の不安定さが少し気になります。 完成版では改善されるのでしょうか。
|
Re: 東方弾幕風のバグ・要望 ( No.28 ) |
- 日時: 2011/02/20 20:59
- 名前: mkm
- >>27
>> /script/aaa/bbb.txt にあるスクリプトが >> /script/lib/ccc.txt を#includeしていた場合に、 >> 「../lib/」を取得するといったことでしょうか? >はい、まったくもってその通りです。一部組み込みで画像を用意しておきたいライブラリがあるので…。 ライブラリ側で画像を読むようにしないと、難しそうです。 これは1つしか#includeしていない保障がないからです。例えば /script/aaa/bbb.txt にあるスクリプトが /script/lib/ccc.txt を#include /script/lib/ddd/ccc.txt を#include していた場合、ライブラリの相対パスが 「../lib/」なのか「../lib/ddd/」なのか区別をつけられません。
>それと、弾画像・レーザー画像のちらつきというか、画像表示の不安定さが少し気になります。 >完成版では改善されるのでしょうか。 環境依存でしょうか。。。 こちらの環境では正常に表示されています。 サンプルのスクリプトでも同じ現象がおきていますでしょうか? 念のため環境を教えていただけるとありがたいです。 (OS、CPU、ビデオカード、VRAMのサイズなどなど。)
|
Re: 東方弾幕風のバグ・要望 ( No.29 ) |
- 日時: 2011/02/21 23:37
- 名前: ガラス草
- >>28
ライブラリに自身の相対パスを参照する関数を埋め込むことができたらよいのですが。 “.\〜”を使うとスクリプト本体のパスしか取れないですし…。
>念のため環境を教えていただけるとありがたいです。 OS:Windows 7 Home Premium CPU:Intel Core i5 ビデオカード:Intel Graphics Media Accelerator HD(オンボード) VRAM:1305MB
なおこちらがスクリーンショットになります。dmh2.pngは拡大画像です。 tp://cid-90810bdeb1bff5f9.office.live.com/browse.aspx/%E5%85%AC%E9%96%8B%E7%94%A8/%E5%BC%BE%E5%B9%95%E9%A2%A8?move=90810BDEB1BFF5F9!112&sid=90810BDEB1BFF5F9!106&iscopy=0
追記: 「領域を640x480に固定」がオンの場合かなり正常に表示されるようになりました。ただ、やはりまだちらつきが残る部分があります。 上記URLの部分に“dmh3.png”というファイルを追加しましたが、 これが問題のちらつきになります。 赤小弾は(127,344)に置いたものですが、 この付近にレーザーなどを描写すると微妙にずれが発生します。 恐らくは描写タイミングが分割されているのではないでしょうか。
|
Re: 東方弾幕風のバグ・要望 ( No.30 ) |
- 日時: 2011/02/27 21:39
- 名前: mkm
>>29 >ライブラリに自身の相対パスを参照する関数を埋め込むことができたらよいのですが。 >“.\〜”を使うとスクリプト本体のパスしか取れないですし…。 GetCurrentScriptDirectoryでは難しいでしょうか。 ライブラリ中で呼び出せば、ライブラリ自身のフォルダが返ります。
>追記: >「領域を640x480に固定」がオンの場合かなり正常に表示されるようになりました。ただ、やはりまだちらつきが残る部分があります。 画像など張っていただきありがとうございました。 ただ、弾の近くにレーザー置いても再現できていません。
>赤小弾は(127,344)に置いたものですが、 座標が変わらない弾でもちらつくということでしょうか。
ウィンドウサイズに影響をうけるとのことなので、 通常のウィンドウにゲーム画面を貼り付けているのがよくないのでしょうか。。。 ↓本体を仮に作成してみました。 これでも再現しますでしょうか? tp://www.geocities.co.jp/SiliconValley-Oakland/9951/temp/th_dnh_ph3_Test.zip
|