[掲示板へもどる]
一括表示

記事No: 21518 [関連記事]
タイトル飛び道具を放ち、命中したら反応するコモン
投稿日: 2023/04/27 21:17
投稿者ステルス [rWOrpOrOp282(海外)]

[やりたいこと]
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)フレーム
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇

を作りました。
[やってみた結果、どううまくいかないか]
玉は出るのですが、座標があらぬ方向を示しているのか目の前のマップイベントに当たっても反応しません。
それどころか変な方向のマップイベントが反応したりします。
数式からタイルサイズを消したりなどもしてみましたが、それでも全く反応しません。

どうすれば解決出来るでしょうか。


記事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)フレーム
|■
◇分岐終了◇


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


記事No: 21520 [関連記事]
タイトルRe: 飛び道具を放ち、命中したら反応するコモン
投稿日: 2023/04/29 07:51
投稿者ステルス [rWOrpOrOp282(海外)]

無事解決しました!
ありがとうございます!