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

記事No: 21538 [関連記事]
タイトルスパイ映画などによくある赤外線センサー
投稿日: 2023/06/02 18:07
投稿者影月 [riFrFOrO579(海外)]

タイトル通りのものを作りたいのですがセンサーを一定間隔でon/off切り替えに
するためにウェイトを入れるとセンサーonの状態でもセンサーが動作してくれません。

ウェイトを入れずにセンサーを稼働させる分には問題なく動作してくれるのですが……

コモンは以下のようになります

■ループ開始
|■デバッグ文:ループスタート
|■動作指定:このイベント / 不透明度設定 255
|■変数操作+: CSelf10 = 主人公 の 画面X座標
|■変数操作+: CSelf11 = 主人公 の 画面Y座標
|■変数操作+: CSelf12 = このマップイベント の 画面X座標
|■変数操作+: CSelf13 = このマップイベント の 画面Y座標
|■変数操作: CSelf13 -= 5 + 0
|■変数操作: CSelf14 絶対値= CSelf10 - CSelf12
|■変数操作: CSelf15 絶対値= CSelf11 - CSelf13
|■条件分岐(変数): 【1】 CSelf14 が 5 以下
|-◇分岐: 【1】 [ CSelf14 が 5 以下 ]の場合↓
| |■条件分岐(変数): 【1】 CSelf15 が 10 以下
| |-◇分岐: 【1】 [ CSelf15 が 10 以下 ]の場合↓
| | |■サウンド:BGS ファイル[SE/警告音.wav] 音 100% 周 100% ル 0ms 再生 / 処理時間:0フレーム
| | |■キャラエフェクト:このイベント[点滅A(明滅)] R255/G0/B0 (2)フレーム
| | |■ウェイト:30 フレーム
| | |■変数操作: V1[視界判定] = 1 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■ウェイト:180 フレーム
|■動作指定:このイベント / 不透明度設定 0
|■ウェイト:60 フレーム
|■デバッグ文:ループ終了
|■
◇ループここまで◇◇

見てのとおりイベント不透明度255のときがセンサーONで指定ウェイトで時間経過するとイベント不透明度が0になってこの時はイベントに触れてもセンサーが反応しないという仕掛けです。

(ここでいう反応とはプレイヤーがイベントに接触した際に指定のseが鳴る状態の事)

さっきも言った通り触れたときに反応する部分は問題なく動作するのはわかっています。
ただウェイトを入れるとセンサーがonになっているタイミングでもセンサーが鳴ってくれないのです。

このセンサーはどうしても一定間隔でon/offを切り替える仕様にしたいのでウェイトを入れるのは必須だと思うのですがどうすればよいでしょうか?


ちなみにこのコモンはマップイベントに並列実行で読み込ませる形をとっていますが、このコモンを使わずマップイベントに直接指示を書いて点滅描写を変数操作によるページ切り替えで表現した場合でもやはり同様にウェイト関連で反応しませんでした。


記事No: 21539 [関連記事]
タイトルRe: スパイ映画などによくある赤外線センサー
投稿日: 2023/06/04 21:13
投稿者YADO [LerLWW459(海外)]

> タイトル通りのものを作りたいのですがセンサーを一定間隔でon/off切り替えに
> するためにウェイトを入れるとセンサーonの状態でもセンサーが動作してくれません。
>
> ウェイトを入れずにセンサーを稼働させる分には問題なく動作してくれるのですが……
>
> コモンは以下のようになります
>
> ■ループ開始
> |■デバッグ文:ループスタート
> |■動作指定:このイベント / 不透明度設定 255
> |■変数操作+: CSelf10 = 主人公 の 画面X座標
> |■変数操作+: CSelf11 = 主人公 の 画面Y座標
> |■変数操作+: CSelf12 = このマップイベント の 画面X座標
> |■変数操作+: CSelf13 = このマップイベント の 画面Y座標
> |■変数操作: CSelf13 -= 5 + 0
> |■変数操作: CSelf14 絶対値= CSelf10 - CSelf12
> |■変数操作: CSelf15 絶対値= CSelf11 - CSelf13
> |■条件分岐(変数): 【1】 CSelf14 が 5 以下
> |-◇分岐: 【1】 [ CSelf14 が 5 以下 ]の場合↓
> | |■条件分岐(変数): 【1】 CSelf15 が 10 以下
> | |-◇分岐: 【1】 [ CSelf15 が 10 以下 ]の場合↓
> | | |■サウンド:BGS ファイル[SE/警告音.wav] 音 100% 周 100% ル 0ms 再生 / 処理時間:0フレーム
> | | |■キャラエフェクト:このイベント[点滅A(明滅)] R255/G0/B0 (2)フレーム
> | | |■ウェイト:30 フレーム
> | | |■変数操作: V1[視界判定] = 1 + 0
> | | |■
> | |◇分岐終了◇
> | |■
> |◇分岐終了◇
> |■ウェイト:180 フレーム
> |■動作指定:このイベント / 不透明度設定 0
> |■ウェイト:60 フレーム
> |■デバッグ文:ループ終了
> |■
> ◇ループここまで◇◇
>
> 見てのとおりイベント不透明度255のときがセンサーONで指定ウェイトで時間経過するとイベント不透明度が0になってこの時はイベントに触れてもセンサーが反応しないという仕掛けです。
>
> (ここでいう反応とはプレイヤーがイベントに接触した際に指定のseが鳴る状態の事)
>
> さっきも言った通り触れたときに反応する部分は問題なく動作するのはわかっています。
> ただウェイトを入れるとセンサーがonになっているタイミングでもセンサーが鳴ってくれないのです。
>
> このセンサーはどうしても一定間隔でon/offを切り替える仕様にしたいのでウェイトを入れるのは必須だと思うのですがどうすればよいでしょうか?
>
>
> ちなみにこのコモンはマップイベントに並列実行で読み込ませる形をとっていますが、このコモンを使わずマップイベントに直接指示を書いて点滅描写を変数操作によるページ切り替えで表現した場合でもやはり同様にウェイト関連で反応しませんでした。


センサー処理の部分は、1フレーム単位で処理しないと機能しないでしょう。

■ループ開始
|■デバッグ文:ループスタート
|■動作指定:このイベント / 不透明度設定 255
|■回数付きループ [ 180 ]回
| |■変数操作+: CSelf10 = 主人公 の 画面X座標
| |■変数操作+: CSelf11 = 主人公 の 画面Y座標
| |■変数操作+: CSelf12 = このマップイベント の 画面X座標
| |■変数操作+: CSelf13 = このマップイベント の 画面Y座標
| |■変数操作: CSelf13 -= 5 + 0
| |■変数操作: CSelf14 絶対値= CSelf10 - CSelf12
| |■変数操作: CSelf15 絶対値= CSelf11 - CSelf13
| |■条件分岐(変数): 【1】 CSelf14 が 5 以下
| |-◇分岐: 【1】 [ CSelf14 が 5 以下 ]の場合↓
| | |■条件分岐(変数): 【1】 CSelf15 が 10 以下
| | |-◇分岐: 【1】 [ CSelf15 が 10 以下 ]の場合↓
| | | |■サウンド:BGS ファイル[SE/警告音.wav] 音 100% 周 100% ル 0ms 再生 / 処理時間:0フレーム
| | | |■キャラエフェクト:このイベント[点滅A(明滅)] R255/G0/B0 (2)フレーム
| | | |■ウェイト:30 フレーム
| | | |■変数操作: V1[視界判定] = 1 + 0
| | | |■
| | |◇分岐終了◇
| | |■
| |◇分岐終了◇
| |■ウェイト:1 フレーム
| |■
| ◇ループここまで◇◇
|■動作指定:このイベント / 不透明度設定 0
|■ウェイト:60 フレーム
|■デバッグ文:ループ終了
|■
◇ループここまで◇◇


記事No: 21540 [関連記事]
タイトルRe: スパイ映画などによくある赤外線センサー
投稿日: 2023/06/06 14:15
投稿者影月 [riFrFOrO579(海外)]

あああるほど
そういう調整が必要だったんですねぇ

無事センサーも実装できました
ありがとうございます