質問スレッド
このフォームからは投稿できません。
name
e-mail
url
subject
comment

[新規順タイトル表示] [ツリー表示] [新着順記事] [留意事項] [ワード検索] [過去ログ] [管理用]

記事No: 21534 [関連記事]
タイトルSTGゲーム続き 敵弾発射時にマップ移動した際の弾ピクチャの消し方
投稿日: 2023/05/25 20:13
投稿者影月 [riFrFOrO579]

STGゲーム続き 敵弾発射時にマップ移動した際の弾ピクチャの消し方 (画像サイズ: 363×369 13kB)

今STGを作っているのですがマップ移動時にピクチャで表示させている敵の弾がうまく消えてくれません。
マップの出入りに変数をつけてその変数が1のときに該当ピクチャを消去する指示を入れることによって一応弾は消えてくれるのですがそうすると今度は前のマップに戻ったときなぜか消えたはずの弾が表示されたままになってしまうというバグが起こってしまいます。

ゲーム内容としてはステルスゲームで主人公が敵視界に入ると敵が弾を撃ってくるという仕掛けです。

視界の表現にはウディタ公式サイトにある8方向視界コモン(UDB版)を使い、敵の弾発射にはDot蜥蜴の掘っ立て小屋というサイトにある自機狙い弾の作り方というページに貼ってあった敵の弾発射コモンを使わせてもらっています。

まとめるとこんな感じです。
・主人公が敵の視界に入る
・すると8方向視界コモンがUDB経由で敵用のイベントのセルフ変数0に1を代入する
・敵用イベントセルフ変数0=1で敵の弾発射コモン呼び出し
・この状況で敵が弾を撃った瞬間に別マップに移動すると弾が残ってしまう※
・あるいは弾を消えるよう設定しても前マップに戻ると弾が表示されてしまう※
※この際弾は動かず画面の一点に固定されたまま

敵の弾発射コモン
▼ 敵と主人公の座標を取得
■変数操作+: CSelf15[敵キャラX座標] = このマップイベント の 画面X座標
■変数操作+: CSelf16[敵キャラY座標] = このマップイベント の 画面Y座標
■変数操作+: CSelf17[主人公X座標] = 主人公 の 画面X座標
■変数操作+: CSelf18[主人公Y座標] = 主人公 の 画面Y座標
▼ X、Yそれぞれの座標の差を求めます
■変数操作: CSelf25[X座標の差] = CSelf17[主人公X座標] - CSelf15[敵キャラX座標]
■変数操作: CSelf26[Y座標の差] = CSelf18[主人公Y座標] - CSelf16[敵キャラY座標]
▼ X、Yの座標の差を代入して角度を求めます
■変数操作: CSelf27[弾発射角度] = 角度[x10]←傾き X: CSelf25[X座標の差] Y: CSelf26[Y座標の差]
▼ cosと角度でX方向の移動量を求めます
■変数操作: CSelf28[cos] = cos[x1000]←角度[x10] = CSelf27[弾発射角度] + 0
▼ sinと角度でY方向の移動量を求めます
■変数操作: CSelf29[sin] = sin[x1000]←角度[x10] = CSelf27[弾発射角度] + 0
▼ 移動量が大きすぎるので除算して小さくします。
▼ 大きな値で割るほどスピードが遅くなります。
■変数操作: CSelf29[sin] /= 160 + 0
■変数操作: CSelf28[cos] /= 160 + 0
▼ 敵の座標に弾を表示、グラフィックは各自用意してください。
■ピクチャ表示:300 [中心]ファイル「BasicData/icon010.png」 X:CSelf15[敵キャラX座標] Y:CSelf16[敵キャラY座標] / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 65% / カラー R[100] G[100] B[100]
■デバッグ文:ピクチャ表示:300
▼ 回数が多いほど、弾の飛距離が伸びます。
■回数付きループ [ 30 ]回
|▼ 弾の移動を行います。相対にチェック入れるのを忘れないでください。
|■ピクチャ移動:300 相対X:CSelf28[cos] Y:CSelf29[sin] / 1(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 65% / カラー R[100] G[100] B[100]
|■ウェイト:1 フレーム
|■変数操作+: CSelf12[ピクチャのX座標] = ピクチャ:300 の X座標
|■変数操作+: CSelf13[ピクチャのY座標] = ピクチャ:300 の Y座標
|■変数操作: CSelf13[ピクチャのY座標] -= 5 + 0
|■変数操作: CSelf19 絶対値= CSelf12[ピクチャのX座標] - CSelf17[主人公X座標]
|■変数操作: CSelf20 絶対値= CSelf13[ピクチャのY座標] - CSelf18[主人公Y座標]
|■条件分岐(変数): 【1】 CSelf19 が 5 以下
|-◇分岐: 【1】 [ CSelf19 が 5 以下 ]の場合↓
| |■条件分岐(変数): 【1】 CSelf20 が 10 以下
| |-◇分岐: 【1】 [ CSelf20 が 10 以下 ]の場合↓
| | |■キャラエフェクト:主人公[点滅A(明滅)] R255/G0/B0 (2)フレーム
| | |■動作指定:主人公 / ジャンプ-右0下0
| | |■イベントの挿入[名]: ["○回復・ダメージ処理"] <コモンEv 4> / 1:HPの回復・減少 / 1:ファイターさん / -1
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■イベントの挿入[名]: ["マップ移動時敵弾消去"] <コモンEv 229>
|■イベントの挿入[名]: ["敵弾壁判定"] <コモンEv 218>
|■
◇ループここまで◇◇
▼ 弾を消します。
■ピクチャ消去:300 / 0(0)フレーム
■キャラエフェクト:主人公[点滅A(明滅)] R0/G0/B0 (0)フレーム


やりたいこととしては敵の弾発射時に主人公が別マップ移動した際
弾を消す(消すだけなら現状でもできる)

移動先マップから移動元マップに戻った際表示されてしまう敵弾を消したいです。


添付ファイルは移動先から移動元に帰ってきたときのバグの参考例です。
マップが切り替わった直後一瞬敵設定のマップイベントから弾が表示されそのあとは画像のように一点に固まっしまいます

敵イベント設定
ページ1何もなし(UDBで設定した8方向視界コモン作動中 ここで主人公が視界に入るとセルフ変数0に1〜9の方向が代入される)
ページ2並列実行セルフ変数0が1以上のとき 敵の弾発射コモン


- 関連一覧ツリー (▼ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ※必須
Eメール
subject 入力禁止
Title 入力禁止
Theme 入力禁止
タイトル (質問内容に沿ったタイトルにしてください、「わかりません」「質問です」はダメ) sage
URL 入力禁止
URL
手動改行 強制改行 図表モード
添付ファイル    (500kBまで)
削除キー (英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
プレビュー   

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No 削除キー