脱出ゲームの作り方

【脱出ゲームの作り方】10.アイテムの使用

投稿日:

 

はじめに

ParaFlaを用いた脱出ゲームの解説も、とうとう第10章になりました。
そして、今回でアイテムに関連する項目の3回目になりますね。

これまでの章で、カギとハンマーを取得・表示・選択できる機能を実装しました。
この章では、これらのアイテムを使用する場合の処理を解説していきます。

 

画像を準備しよう!

アイテムを使用するには、アイテムを使用するためのオブジェクトが必要です。
というわけで、カギを用いるためのロッカーを用意します。
ロッカーは便宜上、
・ロッカー本体(locker.pdr)
・取っ手(locker_totte.pdr)
・カギ穴(locker_hole.pdr)
の3種類のオブジェクトから成ることにします。
そして、これらのオブジェクトを1つのスプライト:lockerに格納し、room4に配置します。

 

実装しよう!

このロッカーですが、最初はカギがかかっています。
カギがかかっている状態で取っ手を引いてもロッカーは開きませんが、
カギを開けた状態で取っ手を引くと、ロッカーが開きます。

最初に「ロッカーにカギがかかっている」ことを示すフラグを定義しましょう。
ここでは、_root.open_lockerとします。
この値がfalseの場合はロッカーにはカギがかかっている
trueの場合はロッカーのカギは開いている、とします。
最初はカギがかかっているわけですから、
initの部分で、_root.open_locker = false;と記述しておきましょう。

次に、ロッカーの本体をクリックした場合の処理を記述します。
適当に「これはロッカーだね」とでもメッセージを表示させることにします。
この記述ですが、スプライト:lockerのクリップアクションとして記述するのではなく、
スプライト内のlocker.pdrをボタン化して、locker.pdr自体に記述することに注意してください。

その次は、ロッカーの取っ手をクリックした場合の処理を記述します。
これは、_root.open_lockerの値を参照して、
この値がfalseである=カギが閉まっているなら、ロッカーを開くことができず、
(「開かないなぁ…」とメッセージを表示)
この値がtrueである=カギが開いているなら、ロッカーの拡大画面に遷移させます。
ロッカーの拡大画面は、ラベルをroom4_lockerとして、スプライト:mainに追加しておきましょう。
(遷移後の画像はroom4_locker.pdr)

そして、カギ穴をクリックした場合の処理を考えます。
第9章において、カギが選択されている状態は、_root.select_item = "key"と定義しました。
この状態でカギ穴をクリックすると「カギが開いた」というフラグを立てる、
すなわち、_root.open_locker = trueとすればよいわけです。
_root.select_itemの値が"key"以外の場合は、
カギ穴を調べた場合のメッセージを表示させればよいですね。
カギが閉まっている場合と開いている場合でメッセージを分ければ、より親切です。

ここで、脱出ゲームによくある、「使用したアイテムの表示から消す」という処理を入れてみましょう。
カギのように、1度使用したら、二度と使わないようなアイテムにこの処理を入れると便利です。
処理の方法はそんなに難しくないです。
アイテムを使ったかどうかをアイテム画面のスプライトが監視しておき、
アイテムを使ったというフラグが立てば、_visible = false;とすれば良いだけです。
カギを使ったかどうかは、_root.open_lockerの値がtrueかfalseかを調べればわかりますね。
また、カギの表示を消した場合、
このままでは選択中のアイテムを示す枠が、カギの部分に表示されっぱなしになりますので、
カギを使った時点で、_root.select_item = "no"としておきましょう。
これでカギを使った瞬間、カギと枠の表示が消えます。

以上をまとめると、カギ穴に記述するアクションスクリプトは以下のようになります。
※効果音に関して
・カギを開けたときの効果音:open_key.mp3、
・ロッカーを開けたときの効果音:open_locker.mp3
・ロッカーを閉めたときの効果音:close_locker.mp3

on (release){
if (_root.select_item == "key"){
_root.message = "カギが開いた!!";
_root.message_window.gotoAndPlay("open_key");
_root.open_locker = true;
_root.select_item = "no";
}else{
if (_root.open_locker == false){
_root.message = "カギが閉まっているみたいだ";
_root.message_window.gotoAndPlay("message");
}else{
_root.message = "カギが開いているみたいだ";
_root.message_window.gotoAndPlay("message");
}
}
}

また、スプライト:item_windowにおける、
スプライト:keyのアクションスクリプトの追加記述は以下のようになります。

onClipEvent (Load) {
if ((_root.item_get_key == false) || (_root.open_locker == true)){
_visible = false;
}else{
_visible = true;
}
}
-
onClipEvent (enterFrame) {
if ((_root.item_get_key == false) || (_root.open_locker == true)){
_visible = false;
}else{
_visible = true;
}
}
-
on (release){
_root.select_item = "key";
}

※赤字が追加部分

 

実装完了!

最終的に出来上がったFLASHは以下のようになります

 



 

普通の状態でロッカーのカギ穴をクリックしても何も起こりませんが、
カギを選択した状態でカギ穴をクリックすると、カギが開き、カギと枠の表示が消えることが確認できます。
また、カギを開いた状態でロッカーの取っ手をクリックすると、ロッカーが開くことが確認できます。

以上で、第10章は終了です。
ここまでの内容を飲み込むことができれば、アイテムの取得・表示・使用ができるようになります。
サンプルのほうも、かなり本格的な脱出ゲームっぽくなってきましたしね。
次の章では、「アイテムにアイテムを使用する機能」、すなわち、about itemについて解説します。
about itemについても理解できれば、脱出ゲーム作成に関する大筋は理解できたことになります。
というわけで、次回をお楽しみに。

この章で作成したファイルはこちらから。
lzh形式
zip形式
※このファイルは使用・流用は自由としますが、そのままの転載は不可とします。
使用・流用した場合、強制ではありませんが、連絡・クレジット等をしていただければ幸いです。
ただし、効果音に関しては、他サイト様のものを使用させていただいておりますので、
効果音については二次使用をせず、ご自身で取得するようにお願いいたします。

 

-脱出ゲームの作り方
-,

Copyright© WANPA's STORE , 2017 All Rights Reserved.