instance_activate/instance_deactivate関数を使って条件をつけてdeactivateしてまたactivateするとなると処理がちょっと複雑になりますが、これを簡単に済ませるやり方です。
インスタンスをroom外へ出す/戻すということをします。
実際にactivate/deactivateするのではなく、room外へ追いやって一旦蚊帳の外へ出てもらうという処理です。
これで済む場合も結構あります。
下記の関数は一例です。
/// @desc scr_instance_activate();
/// @param {bool} do_activate
/**********************************************************************
desc
簡易版アクティベート関数
インスタンスをroom外に出す / 戻す
return : n/a
**********************************************************************/
var _do_activate = argument0;
if (_do_activate)
{
if (x < 0) x = -(x+5000); // room内に戻す
}
else
{
if (x >= 0) x = -(x+5000); // room外に出す
}
stepとか呼ばれてしまう感じですか?
deactivateしないのでinstanceは動き続けます。stepイベントも実行され続けます。
なので必要があればstepイベント内の処理をスキップさせたりします。