PIero
1
キャラクターの着地時に足元のコネクターから土煙のパーティクルを出したいのですが上手く表示されません。
(ジャンプ)→(空中)→(着地)
の3つのステートの(着地)のステートでパーティクルを発生させています。
ですが着地の時には表示されず。一度着地した後にもう一度ジャンプした時に表示されます。
足元以外のコネクターから出すと同じパーティクルでも表示されますし、足元のコネクターの位置を変えても表示されます。パーティクルの画像自体を上に上げても表示されます。タイルのコリジョンより下の位置で生成されると表示されません。ですが着地の時には表示されなかったパーティクルがその後ジャンプしてタイルとキャラクターの間に隙間が出来ると何故か遅れて表示されます。
これはどういう仕様なのでしょうか?パーティクルにはタイルとの衝突判定はないと思っているのですが実はあるのでしょうか?
過去のトピックでSDF Collisionをオンにすれば衝突するとありましたがタイルの設定はオフの状態です。衝突しない為には他に何か設定が必要なのでしょうか?
Baz
2
この状況について、プロジェクトファイルがあれば、なぜこれが起こり得るのかを正確に確認できるので便利です。粒子が陸の状態では動作しない理由を調査するため、プロジェクトを pgmmv-support@gotchagotcha.jp までお送りいただけますでしょうか?
PIero
3
ありがとうございます。プロジェクトデータをお送りさせていただきました。
操作方法は下記の通りです。
キーボードで移動:ASD 攻撃:j ジャンプ:k
ダッシュ:左右に移動しながらスペース
になります。ご確認よろしくお願いいたします。
プロジェクトを確認しましたので、提出していただきありがとうございます!
論理上、キャラクターの動きと同期外になる要因がないため、明らかにバグが発生しているようです。実際、プレイテストの最初のジャンプでも、着地エフェクトが確認できました。
さらに、キャラクターのアクションと同期外にエフェクトが再生される原因となる他のトリガーは論理上に存在しませんでした。
したがって、本件をバグ調査として提出いたします。
PIero
5
ご確認ありがとうございます。何卒よろしくお願いいたします。
こちら原因が確認できました、これは仕様で、設定上の問題でした。
原因は大きく2つあります。
①可視領域矩形がx=0 y=0 h=0 w=200と特殊な形状に設定されている。
これは、この矩形が画面内にある場合にパーティクルを表示する、といういわゆるカリングの処理に使われる矩形なのですが、これが画面外になってしまっているため表示されないという問題でした。
一方で、ジャンプをすることでキャラクターが上に動き画面内になるため表示される、という形です。
②GPUパーティクルの位置を、 (-88, 153) に変更した上で、 emission_shape_offset = (100,-150) でパーティクルだけ 150px上に動かす、という処理を行っている。
これは足元は画面内なのになぜ表示されないのか?ということに対する回答になります。
GPUParticles2D のノード位置自体が (-88, 153) で、表示位置より153px 下(地面の下)に表示されるようになっており、画面外になってしまっています。
対応としては、①の矩形サイズを初期値に戻す、②の二重の移動処理をやめて、ポジションを0,0にしてパーティクルのオフセットを0にする。このいずれか(より正しく動作するには両方)対応することで動作します。
「いいね!」 2
PIero
7
ありがとうございます。教えていただいた設定で正常に動作しました。
こちらの理解不足ゆえの設定ミスだったようでお騒がせしました。
「いいね!」 1