栞代わりの制作メモ

・ツクールやMMF2などで作ったモノや できるまで

【CF2.5】意外と曲者な 条件を反転

ステージ3もだいたいできてきた
今作ってるやつはステージ3までできてます。
ニコフェスに向けて作っているので
ステージ4まで作って
今週の日曜日には 暫定版を出したい考えています。

さて、インディゲームクリエイター(CF2.5)、MMF2を使う利点は
いろんなオブジェクトが衝突したときの設定ができて
(AとBが衝突したらとか。
アクツクやアクエディはこれがあまりできない)
そして、その判定がグラフィックの透明部分を除く部分であるという
細かくなっていること(ファイン判定)があります。

衝突:別のオブジェクトで
AとBが重なるとき。
これを条件に設定できるのは本当に便利なんですよ。
炎に当たったら燃え上がるとか 氷に当たったら凍るとかが
やりやすい。

で、条件式を左クリックすると
条件を反転 っていうコマンドが出てきます。
これを使ったら、AとBが重ならないとき が設定できるんじゃないか。
そう考えて、イベントを組んでみました。
ところが、使ってるうちに
「あれ? このイベント起動しないなぁ」ってことがあって
条件式変えたり、オブジェクト消したり実験したところ。

どうやら AとBが重なるときの反転した条件式は

AとBが1つ以上フレーム内に存在している状態
 AとBが重ならないとき

にイベントが実行されるようです。

また、
②画面内に複数Aが存在するなら
 すべてのAがBと重なっていないとき

にイベントが実行されることもわかりました。

AとBが重なるとき の場合は
イベント内容にAとBに対するものがあった場合
その重なっているAとBにだけイベントが実行されたのですが
AとBが重なるときの反転の場合は
すべてのAとBに対して、イベントが実行され
条件も適用されてしまっているようです。

たしかに数Aの論理の領域では
否定を考えるときにそういう性質がありましたね。

あるAとあるBが重なる。→ すべてのAとBが重ならない。

あるを否定するとすべてになる。

条件を反転すると こういう条件になってしまうので
重ならないときを判定するときは
別の方法がいいかもしれませんね。

そこで
AとBが重ならないとき を判定する方法として
思いつくのが
変数で管理する方法。

例えば 任意の変数Xを使用して


イベント1
条件:常に実行
内容:オブジェクトAの変数Xを0に変更

イベント2
条件:AとBが重なっている
内容:オブジェクトAの変数Xを1に変更

この順番でイベントを作って
(逆にしたらダメよ)
このイベントより下に
「オブジェクトAの変数X=0」を条件として使えば
AとBが重なっていないときを判定できます。

以上、反転をいじっているうちに
ふと気づいた走り書きメモでした。
関連記事
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://jtrshiogawa.blog.fc2.com/tb.php/167-cc28556b
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad