- 699 名前:名前は開発中のものです。 mailto:sage [2007/12/18(火) 19:47:28 ID:u37r1wue]
- >>698
歩いて落ちる床の上に来た場合は接触状態になっているんだが、これはコリジョンとは違うんだ。 だから、コリジョンイベントとは別に、プレイヤーと落ちる床との接触状態を調べて、条件を満たしたら床を落とす、様なことをしなきゃならん。 で、調べる方法だけど、アクションアイコンだとこれは無理。だと思う。 プレイヤのステップイベントに execute code を追加して、以下のように記述。 ※空白は全角なので、コピペするなら半角に直すこと。 var id_floor; /*id_floor を、execute code 内だけ有効な変数とする */ id_floor = instance_place(x,y+1, object228); /* instance_place()でプレイヤの直下に、object228 (落ちる床)が存在するかどうかしらべている */ /* もしプレイヤの下にobject228が存在したら、 id_floor にそのインスタンスID が代入される。 そうでなければ、 noone という値が入る */ if (id_floor != noone) { if (id_floor.isDrop == false) { /* このif文を付けないと、接触中常にalam[0]が10になってしまうので、必ずこの条件を入れること。 */ id_floor.alarm[0] = 10; /* floor_id に対して、10ステップ後にアラーム0(落ちる動作)が発動するようにする */ id_floor.isDrop = true; } } 変数isDropで落ちるフラグを判定している。 これがないと、alarm[0]が接触中は常に10になってしまうんで、乗っている間落ちないことになってしまう。 変数isDropを使うことになったんで、初期化が必要。落ちる床の create イベントにvarアクションを追加、variable: isDrop、value: falseとする。 さらに、落ちる床のobj_redとのコリジョンイベント中に、varアクションを追加し、variable: isDrop、 value: true とする。 あと、コリジョンイベント中にある set vert.speed アクションは削除、でいいとおもう。
|

|