パーティクルを発生させるとほかのGUI表示が不規則に非表示になります。(高頻度) ドットのしぶきを発生させるような小規模なものなのですが、パーティクルの作り方がミスってて重すぎるのか…分からないです パーティクル使ってる方同じような現象が発生することはありますか?。
GMSのバグの可能性もありそうですが パーティクルのコードとGUI表示のコードがまず怪しそうですね。 その箇所って見せられそうですか?
パーティクルObjのcreate_event
pp=global.main_player col_ten=make_color_rgb(255,170,60); FirstParticleSystem = part_system_create(); part_system_depth(FirstParticleSystem,-500); first_particle = part_type_create(); part_type_shape(first_particle,pt_shape_pixel); part_type_scale(first_particle,1,1); part_type_size(first_particle,1,1,0,0);//wigleとは反復のことらしい part_type_color2(first_particle,col_ten,col_ten); part_type_alpha3(first_particle,1,1,0.8);//透明度 part_type_speed(first_particle,3,5,-0.015,0);//粒子速度 part_type_direction(first_particle,35,55,0,0);//方向 part_type_gravity(first_particle,0.04,-90);//重力。強さと、方向 part_type_orientation(first_particle,0,0,0,0,false);//回転 part_type_life(first_particle,20,30);//寿命 part_type_blend(first_particle,false);//ブレンド //ここからエミッタ first_emitter = part_emitter_create(FirstParticleSystem); part_emitter_region(FirstParticleSystem, first_emitter, x-1, x+1, y-1, y+1, ps_shape_line, ps_distr_linear);
パーティクルObjのuser_event0
pp=global.main_player pp_tg=global.main_player.target_enemy //以下プレイヤーの攻撃方向と対象エネミーの位置を反映させる処理 part_system_depth(FirstParticleSystem,-pp.play_y+4); part_emitter_region(FirstParticleSystem, first_emitter, pp_tg.play_x-1, pp_tg.play_x+1, pp_tg.play_y-52, pp_tg.play_y-52, ps_shape_line, ps_distr_linear); if(pp.doujiosi_bottan=1||pp.doujiosi_bottan=11||pp.doujiosi_bottan=12){ part_type_direction(first_particle,0,20,0,0); } if(pp.doujiosi_bottan=2||pp.doujiosi_bottan=22||pp.doujiosi_bottan=21){ part_type_direction(first_particle,160,180,0,0); } if(pp.doujiosi_bottan=3||pp.doujiosi_bottan=33||pp.doujiosi_bottan=34){ part_system_depth(FirstParticleSystem,-pp.play_y-1); part_type_direction(first_particle,250,290,0,0); //した } if(pp.doujiosi_bottan=4||pp.doujiosi_bottan=44||pp.doujiosi_bottan=43){ part_emitter_region(FirstParticleSystem, first_emitter, pp_tg.play_x-1, pp_tg.play_x+1, pp_tg.play_y-32, pp_tg.play_y-32, ps_shape_line, ps_distr_linear); part_type_direction(first_particle,70,110,0,0); //上 } if(pp.doujiosi_bottan=13||pp.doujiosi_bottan=31){ part_system_depth(FirstParticleSystem,-pp.play_y-1); part_type_direction(first_particle,315-10,315+10,0,0); //右下 } if(pp.doujiosi_bottan=14||pp.doujiosi_bottan=41){ part_emitter_region(FirstParticleSystem, first_emitter, pp_tg.play_x-1, pp_tg.play_x+1, pp_tg.play_y-32, pp_tg.play_y-32, ps_shape_line, ps_distr_linear); part_type_direction(first_particle,35,55,0,0); //右上 } if(pp.doujiosi_bottan=23||pp.doujiosi_bottan=32){ part_system_depth(FirstParticleSystem,-pp.play_y-1); part_type_direction(first_particle,225-10,225+10,0,0); //左下 } if(pp.doujiosi_bottan=24||pp.doujiosi_bottan=42){ part_emitter_region(FirstParticleSystem, first_emitter, pp_tg.play_x-1, pp_tg.play_x+1, pp_tg.play_y-32, pp_tg.play_y-32, ps_shape_line, ps_distr_linear); part_type_direction(first_particle,135-10,135+10,0,0); //左上 } //方向と位置が決まったので80個生成 part_emitter_burst(FirstParticleSystem, first_emitter,first_particle,80);
かなり読みづらいと思われますすみません。 プレイヤーがエネミーにぶつかったときにその方向に向けてドットのしぶきを飛ばすパーティクルになります。 パーティクルObjはルーム開始時に生成しておいてヒット時にuser_event0を呼び出す形です。
消えてしまう方のGUI表示は画面上に常に表示するHPバーなどのHUDで、複数のHUDが不規則に消えるので特定の表示コードがあるわけではないのですが大抵
draw_sprite_ext()
で描画しています。今気が付きましたが消える際は一つのobjにコードのある表示が丸々消えていますね、やっぱり処理が重いんですかね…
パフォーマンス面を見るために、 show_debug_overlay(true); として、fpsやテクスチャスワップの情報を表示してみてください。 もう1つ、デバッガで動かして左上に表示されるグラフ?部分を見てください。 できればそれらのキャプチャ画像をここに貼れるでしょうか? 何か分かるかも知れません。
問題なさそうですね...
海外のフォーラムで見たところ、パーティクルでGUIが消える問題についてのトピックがりました。 https://forum.yoyogames.com/index.php?threads/issue-with-gui-flashing-or-disappearing.84276/
どうやらpart_system_depthが影響しているらしいです。 ただそこまでしかわかりませんでした../
ありがとうございます!トピックみて調べてみます。
キャプチャとってきましたこの部分で大丈夫でしょうか。 ただFPSは1000~3000で激しく変動しているようです。FPSってこんなに高いんだけっけ…(お恥ずかしいことに見方が分かってない)
実fpsはゲームの実行fpsよりはるかに高いです。1000以上は十分高いので問題なさそうです。 debug_overlayの棒グラフ、赤と黄色の部分も負荷は低いので問題ないようですね。 テクスチャページとスワップが37,38で多めですが、これで表示が消えたりするのはたぶん無いと思います(私の経験では無いです)。 キャプチャの瞬間に限れば、負荷の問題はないようです。
GUIイベントのコードを貼ることはできるでしょうか?
これは関係ないでしょうか。 https://forum.yoyogames.com/index.php?threads/particles-and-gui-gamemaker-1-4-9999-solved.52700/
part_system_depth()消したら治りました…!ここが原因のようです
消えていたUIの一つのGUIイベントです
if(global.raihau_bar_f=2){ draw_sprite_ext(spr_UI_raihau_bar_aa,0,0,0,1,1,0,c_white,1) //文字系 draw_set_font(fnt_mincho_test) draw_set_colour(c_black); draw_text_transformed(240-string_width(global.raihau_txt)*0.5,1 ,global.raihau_txt,1,1,0); }
part_system_depth()が関係してたんですね。直ってよかった!
そうみたいです! どうやってパーティクルのdepthを調整できるかはこれから考えますが大きく前進しましたありがとうございました!
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 管理チームへ匿名通報が送信されます。あなたが誰であるかを管理チームに特定されることはありません。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
トピックをWIKIWIKIに埋め込む
次のコードをWIKIWIKIのページに埋め込むと最新のコメントがその場に表示されます。
// generating...
プレビュー
マニュアル(ver2~2.2.x) マニュアル(ver2.3~) YoYoGames YoYoGames 公式コミュニティ GM関連のYoutubeチャンネル集 解説・資料サイト集(日本語) 解説・資料サイト集(英語)
ここまでがあなたのコンテンツ
ここからもあなたのコンテンツ
GMSのバグの可能性もありそうですが
パーティクルのコードとGUI表示のコードがまず怪しそうですね。
その箇所って見せられそうですか?
パーティクルObjのcreate_event
パーティクルObjのuser_event0
かなり読みづらいと思われますすみません。
プレイヤーがエネミーにぶつかったときにその方向に向けてドットのしぶきを飛ばすパーティクルになります。
パーティクルObjはルーム開始時に生成しておいてヒット時にuser_event0を呼び出す形です。
消えてしまう方のGUI表示は画面上に常に表示するHPバーなどのHUDで、複数のHUDが不規則に消えるので特定の表示コードがあるわけではないのですが大抵
で描画しています。今気が付きましたが消える際は一つのobjにコードのある表示が丸々消えていますね、やっぱり処理が重いんですかね…
パフォーマンス面を見るために、
show_debug_overlay(true);
として、fpsやテクスチャスワップの情報を表示してみてください。
もう1つ、デバッガで動かして左上に表示されるグラフ?部分を見てください。
できればそれらのキャプチャ画像をここに貼れるでしょうか?
何か分かるかも知れません。
問題なさそうですね...
海外のフォーラムで見たところ、パーティクルでGUIが消える問題についてのトピックがりました。
https://forum.yoyogames.com/index.php?threads/issue-with-gui-flashing-or-disappearing.84276/
どうやらpart_system_depthが影響しているらしいです。
ただそこまでしかわかりませんでした../
ありがとうございます!トピックみて調べてみます。
キャプチャとってきましたこの部分で大丈夫でしょうか。
ただFPSは1000~3000で激しく変動しているようです。FPSってこんなに高いんだけっけ…(お恥ずかしいことに見方が分かってない)
実fpsはゲームの実行fpsよりはるかに高いです。1000以上は十分高いので問題なさそうです。
debug_overlayの棒グラフ、赤と黄色の部分も負荷は低いので問題ないようですね。
テクスチャページとスワップが37,38で多めですが、これで表示が消えたりするのはたぶん無いと思います(私の経験では無いです)。
キャプチャの瞬間に限れば、負荷の問題はないようです。
GUIイベントのコードを貼ることはできるでしょうか?
これは関係ないでしょうか。
https://forum.yoyogames.com/index.php?threads/particles-and-gui-gamemaker-1-4-9999-solved.52700/
part_system_depth()消したら治りました…!ここが原因のようです
消えていたUIの一つのGUIイベントです
part_system_depth()が関係してたんですね。直ってよかった!
そうみたいです!
どうやってパーティクルのdepthを調整できるかはこれから考えますが大きく前進しましたありがとうございました!