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

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

記事No: 21519 [関連記事]
タイトルRe: 飛び道具を放ち、命中したら反応するコモン
投稿日: 2023/04/28 23:26
投稿者YADO [LerLWW459]

> [やりたいこと]
> hhttps://donichi-game.com/howto-arpg02-arrow/
> に出ている、画像で矢を放ち、ヒットしたマップイベントが光るコモンを作ろうとして苦戦しています。
> バージョンは2.24です。
> [やってみたこと]
> URL先を参考に
> 矢自体を放つコモン↓
> ■変数操作+: CSelf10[玉座標X] = 主人公 の 画面X座標
> ■変数操作+: CSelf11[玉座標Y] = 主人公 の 画面Y座標
> ■変数操作: CSelf10[玉座標X] -= Sys118:[読]タイルサイズ / 2
> ■変数操作: CSelf11[玉座標Y] -= Sys118:[読]タイルサイズ + 0
> ■変数操作+: CSelf12[発射元の向き] = 主人公 の 向き(1〜9)
> ■条件分岐(変数): 【1】 CSelf12[発射元の向き] が 2 と同じ 【2】 CSelf12[発射元の向き] が 8 と同じ
> -◇分岐: 【1】 [ CSelf12[発射元の向き] が 2 と同じ ]の場合↓
> |■変数操作: CSelf12[発射元の向き] = 0 + 0
> |■変数操作: CSelf14[玉移動値X] = 0 + 0
> |■変数操作: CSelf15[玉移動値Y] = Sys118:[読]タイルサイズ + 0
> |■
> -◇分岐: 【2】 [ CSelf12[発射元の向き] が 8 と同じ ]の場合↓
> |■変数操作: CSelf12[発射元の向き] = 1800 + 0
> |■変数操作: CSelf14[玉移動値X] = 0 + 0
> |■変数操作: CSelf15[玉移動値Y] = Sys118:[読]タイルサイズ * -1
> |■
> -◇上記以外
> |■条件分岐(変数): 【1】 CSelf12[発射元の向き] が 4 と同じ 【2】 CSelf12[発射元の向き] が 6 と同じ
> |-◇分岐: 【1】 [ CSelf12[発射元の向き] が 4 と同じ ]の場合↓
> | |■変数操作: CSelf12[発射元の向き] = 900 + 0
> | |■変数操作: CSelf14[玉移動値X] = Sys118:[読]タイルサイズ * -1
> | |■変数操作: CSelf15[玉移動値Y] = 0 + 0
> | |■
> |-◇分岐: 【2】 [ CSelf12[発射元の向き] が 6 と同じ ]の場合↓
> | |■変数操作: CSelf12[発射元の向き] = 2700 + 0
> | |■変数操作: CSelf14[玉移動値X] = Sys118:[読]タイルサイズ + 0
> | |■変数操作: CSelf15[玉移動値Y] = 0 + 0
> | |■
> |-◇上記以外
> | |■条件分岐(変数): 【1】 CSelf12[発射元の向き] が 1 と同じ 【2】 CSelf12[発射元の向き] が 3 と同じ
> | |-◇分岐: 【1】 [ CSelf12[発射元の向き] が 1 と同じ ]の場合↓
> | | |■変数操作: CSelf12[発射元の向き] = 450 + 0
> | | |■変数操作: CSelf14[玉移動値X] = Sys118:[読]タイルサイズ * -1
> | | |■変数操作: CSelf15[玉移動値Y] = Sys118:[読]タイルサイズ + 0
> | | |■
> | |-◇分岐: 【2】 [ CSelf12[発射元の向き] が 3 と同じ ]の場合↓
> | | |■変数操作: CSelf12[発射元の向き] = 3150 + 0
> | | |■変数操作: CSelf14[玉移動値X] = Sys118:[読]タイルサイズ + 0
> | | |■変数操作: CSelf15[玉移動値Y] = Sys118:[読]タイルサイズ + 0
> | | |■
> | |-◇上記以外
> | | |■
> | |◇分岐終了◇
> | |■条件分岐(変数): 【1】 CSelf12[発射元の向き] が 7 と同じ 【2】 CSelf12[発射元の向き] が 9 と同じ
> | |-◇分岐: 【1】 [ CSelf12[発射元の向き] が 7 と同じ ]の場合↓
> | | |■変数操作: CSelf12[発射元の向き] = 450 + 0
> | | |■変数操作: CSelf14[玉移動値X] = Sys118:[読]タイルサイズ * -1
> | | |■変数操作: CSelf15[玉移動値Y] = Sys118:[読]タイルサイズ * -1
> | | |■
> | |-◇分岐: 【2】 [ CSelf12[発射元の向き] が 9 と同じ ]の場合↓
> | | |■変数操作: CSelf12[発射元の向き] = 3150 + 0
> | | |■変数操作: CSelf14[玉移動値X] = Sys118:[読]タイルサイズ + 0
> | | |■変数操作: CSelf15[玉移動値Y] = Sys118:[読]タイルサイズ * -1
> | | |■
> | |-◇上記以外
> | | |■
> | |◇分岐終了◇
> | |■
> |◇分岐終了◇
> |■
> ◇分岐終了◇
> ■ピクチャ表示:8888 [左上]ファイル「Picture/エネルギー弾.png」 X:CSelf10[玉座標X] Y:CSelf11[玉座標Y] / 0(0)フレーム / パターン 1 / 透 255 / 通常 / 角 CSelf12[発射元の向き] / 拡 100% / カラー R[100] G[100] B[100]
> ■回数付きループ [ 10 ]回
> |■ピクチャ移動:8888 相対X:CSelf14[玉移動値X] Y:CSelf15[玉移動値Y] / 1(0)フレーム / パターン 同値 / 透 同値 / 通常 / 角 同値 / 拡 100% / カラー R[100] G[100] B[100]
> |■イベントの挿入: CSelf13 = コモン217:[ ヒットチェック ]
> |■条件分岐(変数): 【1】 CSelf13 が 1 と同じ
> |-◇分岐: 【1】 [ CSelf13 が 1 と同じ ]の場合↓
> | |■ループ中断
> | |■
> |◇分岐終了◇
> |■ウェイト:3 フレーム
> |■
> ◇ループここまで◇◇
> ■ピクチャ消去:8888 / 0(0)フレーム
> ■
> と
> 命中計算コモン
> ■変数操作: CSelf4[当たり判定] = 0 + 0
> ▼
> ▼
> ■変数操作+: CSelf10[矢画面X] = ピクチャ:8888 の X座標
> ■変数操作+: CSelf11[矢画面Y] = ピクチャ:8888 の Y座標
> ▼
> ■変数操作: CSelf12[矢マスX] = CSelf10[矢画面X] / Sys118:[読]タイルサイズ
> ■変数操作: CSelf13[矢マスY] = CSelf11[矢画面Y] / Sys118:[読]タイルサイズ
> ▼
> ▼
> ■変数操作: CSelf14[スクロールマス数X] = Sys104:Xスクロール値 / Sys118:[読]タイルサイズ
> ■変数操作: CSelf15[スクロールマス数Y] = Sys105:Yスクロール値 / Sys118:[読]タイルサイズ
> ■変数操作: CSelf12[矢マスX] -= CSelf14[スクロールマス数X] + 0
> ■変数操作: CSelf13[矢マスY] -= CSelf15[スクロールマス数Y] + 0
> ▼
> ▼
> ▼
> ▼ 敵サーチ開始
> ■変数操作: CSelf16[チェックID] = -1 + 0
> ■回数付きループ [ 100 ]回
> |■変数操作: CSelf16[チェックID] += 1 + 0
> |■変数操作+: CSelf17[イベントID] = X:CSelf12[矢マスX] Y:CSelf13[矢マスY]のイベントID
> |■条件分岐(変数): 【1】 CSelf17[イベントID] が 0 以上
> |-◇分岐: 【1】 [ CSelf17[イベントID] が 0 以上 ]の場合↓
> | |■デバッグ文:\cself[17]
> | |■変数操作: CSelf4[当たり判定] += 1 + 0
> | |■キャラエフェクト:キャラ[CSelf17[イベントID]][フラッシュ] R200/G0/B0 (20)フレーム
> | |■
> |◇分岐終了◇
> |■
> ◇ループここまで◇◇
> ■
> を作りました。
> [やってみた結果、どううまくいかないか]
> 玉は出るのですが、座標があらぬ方向を示しているのか目の前のマップイベントに当たっても反応しません。
> それどころか変な方向のマップイベントが反応したりします。
> 数式からタイルサイズを消したりなどもしてみましたが、それでも全く反応しません。
>
> どうすれば解決出来るでしょうか。

コモンイベント「ヒットチェック」(命中計算コモン)の中で
■変数操作: CSelf12[矢マスX] -= CSelf14[スクロールマス数X] + 0
■変数操作: CSelf13[矢マスY] -= CSelf15[スクロールマス数Y] + 0
の「−=」の部分は「+=」だと思われる。(リンク先の設定例が間違えている)

100回のループ処理は、同じ座標で100回イベントIDを調べても意味が無いと言えそう。

コモンイベント「ヒットチェック」は、以下のようになるかと思います。
■変数操作: CSelf4 = 0 + 0
■変数操作+: CSelf10 = ピクチャ:8888 の X座標
■変数操作+: CSelf11 = ピクチャ:8888 の Y座標
■変数操作: CSelf10 += Sys104:Xスクロール値 + 0
■変数操作: CSelf11 += Sys105:Yスクロール値 + 0
■変数操作: CSelf10〜CSelf11 /= Sys118:[読]タイルサイズ + 0
■変数操作+: CSelf17 = X:CSelf10 Y:CSelf11のイベントID
■条件分岐(変数): 【1】 CSelf17 が 0 以上
-◇分岐: 【1】 [ CSelf17 が 0 以上 ]の場合↓
|■変数操作: CSelf4 = 1 + 0
|■キャラエフェクト:キャラ[CSelf17][フラッシュ] R200/G0/B0 (20)フレーム
|■
◇分岐終了◇


取りあえずこれで最低限の当たり判定の処理はできるでしょう。


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

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

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