FLASHのアクションスクリプトを使ってゲームを作ってみよう!

FLASHでゲーム作成編

ヒヨコでアクションRPGに挑戦編 TUTORIAL 01

ヒヨコが家の中に入ったようなムービーを作ってみよう!

switch文&変数を利用してヒヨコが剣をゲットするまでのゲーム風ムービーを作ってみよう!

LESSON5で剣を投げれるようになったので、今度はゲーム風にヒヨコが剣
をゲットしてから
投げれるようなムービーを作ってみましょう!新しい文法
やメソッドはswitch文、withなどです。

下の絵をクリックすると矢印キーでヒヨコを操作、右側の家に入れるように
なっています。
入ると剣をゲットして投げれるようになりますよ!!

>> ダウンロード用サンプルファイル 完全版 スクリプト抜き版



解説がながーくなりそうですが、順番にアップしていきますね!
switch文について。
swich文は、if文(〜だったら〜する)と同じ感じで、条件によって処理を
コントロールできます。書き方は下のようになってます。


switch() {

    case 式の値1
       文a;        ・・・
       break;  case 式の値2        文b;        ・・・        break;  default: 文c;       ・・・      
}

これを見てもわかりにくいかもしれませんがとっても簡単です。

 switchの後の()のなかに式を入れて、その値が式の値1のときは文aを実行、
式の値2の時は文bを実行、 それ以外のとき(がdefault
になります。)の時は文c
を実行
。という風な文法です。 例えば、変数numがあったとして、その値が1になったり2になったり3になったり
するとします。変数numが1の時はフレーム1に、変数numが2の時はフレーム2
に、変数numが3の時はフレーム3に、それ以外のときは フレーム4に移動した
いとして、これをswitch文で書くと、
switch( num ) { 
                 
case
gotoAndStop(1) break;  
    case :                         
               gotoAndStop(2);      
               break;

case
:        
gotoAndStop(3);       break;   default: gotoAndStop(4);   }

という風になります。breakアクションは{}で囲まれた中の残りの文をスキップ
します。defaultの部分は必要なければなくてもOKです。 では問題です。この
文をif〜else文で書くとどうなるでしょう?
if( num == 1) { gotoAndStop(1);
} else if (num == 2) { gotoAndStop(2);
} else if (num == 3) { gotoAndStop(3);

} else { gotoAndStop(4); }
となります。同じだったらif文がわかりやすいしわざわざswitch文をつかうことな
いのでは?って思うかもしれませんが、場合によってはswitch文のほうが見や
すく書きやすいことがあります。 例えば変数numが1か2の時はフレーム1に、3の時はフレーム2に、4か5の時
はフレーム3、それ以外のときはフレーム4
などとしたい場合のswitch文とif文の
違いは下のようになります。
switch文
if文
switch( num ) { 
                 
case

case
gotoAndStop(1) break;  
    case :                         
               gotoAndStop(2);
               break;

case

case
gotoAndStop(3); break;

  default:
        
gotoAndStop(4); }
if( num == 1 || num == 2 ) { 
gotoAndStop(1);
} else if (num == 3) {
gotoAndStop(2);
} else if (num == 4 || num == 5 ) {
gotoAndStop(3);
} else {
 gotoAndStop(4);







なんとなくswitch文のほうが見やすいしわかりやすい気がしませんか??

 

with()について
with()は特に必要というわけでもないんですが、スクリプトを見やすく書き
やすくするには便利です。書き方は、

with (ムービークリップ名またはアクションスクリプトオブジェクト) {
if文、swich文などなど
}

どうしてに便利かというと...
下のスクリプトを見比べてみてください。

with()を使ったとき
with()を使わないとき
with( _root.hiyo ) {
if(_x < 0) {
_x = 0;
} else if (_x > 295) { _x = 295;
} else if(_y < 80) { _y = 80;
} else if(_y > 195) {
_y = 195;
}
}
if(_root.hiyo._x < 0) {
_root.hiyo._x
= 0;

} else if (_root.hiyo._x > 295) {
_root.hiyo._x
= 295;
} else if(_root.hiyo._y < 80) {
_root.hiyo._y
= 80;
} else if(_root.hiyo._y > 195) {
_root.hiyo._y
= 195;
}


with()を使ったほうが見やすいでしょ?!これを使うとオブジェクトの名前
とかパスを右の例のように何度も書き込む必要がなくなって、スクリプトを
書くのが楽になるし間違いもへりそうな気がしませんか? でも”絶対使えないと困る”いうわけでもないのでよければ練習してみてく
ださい。
初歩のサウンド制御もLESSON6で解説しようかと思ったんですが、サン
プルファイルの説明が長くなりそうなので、次回にします。


>>EXAMPLE 06 ヒヨコが家の中に入ったようなムービーを作る。
今回はマップの中の家の中にヒヨコが入れ、そこでナイフを手に入れると
ナイフが投げれるようになる!!
と、いう内容のムービーを作ってみましょう!

前回同様、わかり易いようにスクリプトなしFLAファイルをダウンロードして
ください。それにそって説明します。


スクリプトなしFLAファイル(ZIP圧縮) Lesson6>>




では、lesson6_noscript.flaを開いてください。

今回は大きく3つの場面に別れています。最後の2つは画面切り替えの
ためのムービーです。ドアの開く音を家に入る時だけに再生したかった
ので2つに分けました。

  • フレームラベル"start" : ヒヨコはナイフを投げれない、右上の
    家に入れるようになっている。


  • フレームラベル"inHouse"
    家の中。ナイフを取るとヒヨコがナイフを投げれるようになる。

  • フレームラベル"stage2"
    家から出たときの画面。ヒヨコはナイフを投げれるようになっている。

  • フレームラベル"doorOpen" : 家に入る時のドアの開く音が入
    ったムービー(サウンドのみ)。

  • フレームラベル"stair" : 階段を降りる(登る)時の音が入った
    ムービー(サウンドのみ)。




重要な変数と、何のための変数かも簡単に説明しておきます。なんとなく
でいいので記憶の片隅においといてください。(MCはムービークリップの
略です)

  • 変数 go(MC hiyo内)
    ヒヨコが十字キーを押した時に進めるかどうかを決めるための変数
    go = trueの時は進める。go = falseの時は進めない。

  • 変数 num(MC hiyo内)
    ヒヨコの向いている方向によって数値を変化させる。ヒヨコの向い
    ている方向を知るための変数
    num = 1 は後ろ向き、num = 2 は右向き...。

  • 変数 knife(MC knifeMC内)
    ヒヨコがナイフを投げれる状態かどうかを決めるための変数
    knife = trueの時はナイフを投げれる。knife = falseの時は投げ
    れない。


  • 変数 level(メインタイムライン上)
    ヒヨコのステータスによって数値を上下させる。ヒヨコのステー
    タスを知るための変数
    level = 1 は初期状態。level = 2 はナイフを取った後の状態。




あと今回とても長いのでインデックスをつけておきます。

(1) フレームラベル"start"の1フレーム目で初期設定しましょう!
(2) 家の中に入るための入り口をつくりましょう!
(3) 変数level の値によって移動するフレームを変える!!
(4) 家の中に入って..... (ヒヨコの位置を移動させる)
(5) 家の中で..... (アイテムを獲得したら次に進ませる)
(6) ナイフを手に手に入れたー!! (アイテム獲得!喜ぶムービ
   ー再生&それに伴う処理)
(7) 外に出るぞー! ( 家の中から外のマップに移動)
(8) STAGE 1へ。





(1) フレームラベル"start"の1フレーム目で初期設定をしましょう!




上図のここ!のところに下のスクリプトを書いてください。

フレームラベル"start"(メインタイムライン): 1フレーム目

level = 1;
hiyo.go = true;
stop();

ヒヨコのステータスを決める変数levelの値を初期状態なので level = 1
に設定。はじめはヒヨコは十字キーで動かせなければならないので
go = true に設定。フレームが進んでしまうとこまるのでstop();します。


ここで注意することは、変数levelはここで宣言した変数なのでそのま
までいいですが、
変数goはヒヨコのムービークリップ内で宣言してい
る変数なので、hiyo.goってパスを書かないと認識してくれません!




(2) 家の中に入るための入り口をつくりましょう!

メインタイムラインの下のほうにレイヤー名”入り口”というのがあると
思うんですが、そのレイヤーをクリックしてください。すると、右の家の
扉の上あたりに青い四角
がでてきます。(下図参照)




その青い四角をクリックしてください。プロパティをみると、house1と
という名前のムービークリップであることがわかります。



これが家に入るためのしかけになります。ヒヨコがこのムービークリッ
プにヒットすると、家に入るフレームに移動するように設定します。



ムービークリップ "house1"(メインタイムラインのレイヤー”入り口”内)
ムービークリップアクション


onClipEvent(enterFrame){

if(hitTest(_root.hiyo)) {
_root.BGM.stop();
_root.hiyo.go = false;
_root.gotoAndPlay("doorOpen");
}

}

>> スクリプト解説

onClipEvent(enterFrame){
このムービークリップがムービー内にある間下のスクリプトを実行

if(hitTest(_root.hiyo)) {
 
このムービークリップがヒヨコのムービークリップとヒットしたら

  _root.BGM.stop();
  
サウンドオブジェクトBGMをストップ

  _root.hiyo.go = false;
  
変数goにfalseを代入

  _root.gotoAndPlay("doorOpen");
  
ドアを出入りする時のフレーム”doorOpen”を再生 }
}

このスクリプトでは右の家に入るための仕掛けのムービークリ
ップ"house1"にヒヨコがヒットしたら、

1.家に入る時、ドアの開く音が再生されるように
_root.gotoAndPlay("doorOpen"); でフレーム移動、(この時
"doorOpen"(ドアの開く音)から"stair"(階段を降りる音)に続け
てフレームが移動します。)

2.BGMは止めたかったので_root.BGM.stop();でBGMを止め、

3.家に入った後も矢印キーを押し続けたままの人がいた場合、
ヒヨコが移動してしまい困るので、ヒヨコを動けなくするために変
数goにfalseを代入
しています。

スクリプトは上から実行されるので、先にBGMを止めてヒヨコを
動けなくしてしまったほうがいいと思い、上の様な順番で書いて
います。一瞬で実行できるスクリプトなので順番はあまり影響
ないといえばないのかもしれませんが....





(3) 変数level の値によって移動するフレームを変える!!


(2)のスクリプトによって、ヒヨコがムービークリップ"house1"に
接触すると、フレーム"doorOpen"から"stair"の最後のフレーム
再生されます。(下図参照)



フレーム"stair"はナイフをゲットした後、家から出る時の階段の
音としても使うので、"stair"の最後のフレームに、家の中に入っ
たムービー
ナイフをゲットした後、stage1にいくムービーかど
っちを再生するのか決めるためのスクリプトを書きます。


フレームラベル"stair"(メインタイムライン): 最後のフレーム

switch(level){	
  case 1:      this.gotoAndStop("inHouse");
     break;
  case 2:      this.gotoAndStop("stage1");
     break;
}

>> スクリプト解説

switch(level){
switch文が実行される時に変数levelの値が

case 1:
 
level = 1のとき

  this.gotoAndStop("inHouse");
  
フレーム名"inHouse"でストップ

  break;
  
switch文から抜ける

 case 2:
 
level = 2のとき   this.gotoAndStop("stage1");
  
フレーム名"stage1"でストップ
  break;
  
switch文から抜ける
}

今回の新しい文法switch文です!!

はじめにちょこっと説明したように、変数levelはヒヨコのステータスによ
って数値を上下させる予定のものです。今のところlevel = 1 は初期状
態、 level = 2 はナイフを取った後の状態、
と設定しています。
level = 1の時はまだナイフを取ってない状態なので家の中に入る時、
level = 2の時はナイフをとった後なので家の中から出る時、ということ
で上のようなスクリプトになっています。



(4) 家の中に入って.....
家の中に入ってしなければいけないこと。まずヒヨコの位置移動です。
下図のようにヒヨコは右の家から入ったのでこのままだとヒヨコは右上
に位置したままとなってしまいます。


フレームラベル"inHouse"(メインタイムライン): 1フレーム目

hiyo._x = 145;
hiyo._y = 180;
hiyo.gotoAndStop("back");
idou.start();
stop();

1行目と2行目でヒヨコの位置決定をしています。hiyo._xはヒヨコの
x座標、hiyo._yはヒヨコのy座標
を指しますよね。

3行目で、もしヒヨ
コが変な方向を向いていると困るので、絶対ヒヨ
コが後ろを向いているようにするため
、ムービークリップ"hiyo"内
のタイムラインのフレーム”back”(後ろ向きのヒヨコの絵が入って
いるフレームです)で停止するようにhiyo.gotoAndStop("back");
入れておきました。

4行目、idouはサウンドオブジェクトです。階段を降りた後の’ティ
ロリン’って感じの音をスクリプトで鳴らしています。

で、とりあえずstop();です。

ここで同時にレイヤー"マスク"の中に入っているムービークリッ
プ"mask"が再生されます。
このムービークリップは画面切り替
えのための真っ白な画面から家の画面にぼやーっと変わるよう
にするためのものです。




この画面をダブルクリックすると...

では、上図のようにメインのタイムラインにあるレイヤー"マスク"
の4フレーム目をクリック
すると白い四角形の周りが青色のふち
で囲まれているのが見えると思います。その四角形をダブルクリ
ックしてください。ムービークリップ"mask"のタイムラインに移動
したと思います。(下図参照)


上の図のようにムービークリップ"mask"のタイムラインに移動します。

このタイムラインのレイヤー"action"の最後のフレーム(上図の
10フレーム目のところです)に重要な1行を記入します。


ムービークリップ"mask"内のタイムライン
レイヤー"action"の最終フレーム

_root.hiyo.go = true;
stop();

家に入るためのしかけのムービークリップにヒットしたときに、ヒ
ヨコを操作できなくするために、変数goにfalseを代入しましたよ
ね。go = falseのままだとヒヨコは十字キーを押しても反応しま
せん。

このムービークリップが再生終わった時点で家の中の画面が
見えて、家の中のイベントをはじめたい
ので、このムービークリ
ップのタイムラインの最後に_root.hiyo.go = true; を書いて、再
びヒヨコを操作できるようにします。

これで家に入るときのイベントは終わりで、次はナイフをゲット
することによって次に進めるようにスクリプトを書いていきます。





(5) 家の中で.....

メインのタイムラインにもどってください。タイムラインが下図の
ようになったと思います。
次はムービークリップ"inside"の中でナイフをゲットしたら次の
イベントに進めるようにスクリプトを書いていきます。



今度は上図のようにメインのタイムラインにあるレイヤー"家の中"
の6フレーム目をクリック
してください。すると下図のようにニワトリ
とヒヨコとナイフがいる画面の周りが青色のふちで囲まれている
のが見えると思います。これがムービークリップ"inside"で、そ
の画面をダブルクリック
してください。 ムービークリップ"inside"
のタイムラインに移動したと思います。


この画面をダブルクリックすると...


上の図のようなムービークリップ"inside"の中のタイムラインに移動します。

レイヤー"action"の1フレーム目でヒヨコの動ける範囲を制限して、
(ヒヨコがニワトリの上にかぶってしまうと絵てきにおかしいので、
ヒヨコの動ける範囲が画面の下3分の2くらいに制限します。)
2フレーム目でナイフを取ったらナイフをゲットして喜ぶムービー
が再生されるようにしていきます。

ではまずヒヨコの動ける範囲をwithをつかって制限してみましょう!


ムービークリップ"inside"内のタイムライン 
レイヤー"action"の1フレーム目
with(_root.hiyo) { 
  if(_x < 0) {
_x = 0;
} else if (_x > 295) {
_x = 295; } else if(_y < 80) {
_y = 80; } else if(_y > 195) {
_y = 195;
}
}

>> スクリプト解説
with(_root.hiyo) { 
ムービークリップ'hiyo'(以下MC"hiyo")の
if(_x < 0) {
_x = 0;
 
x座標が0より小さいとき、MC"hiyo"のx座標に0を代入
  (ヒヨコの位置が0より小さいときは0の位置にもってこいってことです)

} else if (_x > 295) {
_x = 295;
 
x座標が295より大きいとき、MC"hiyo"のx座標に295を代入

} else if(_y < 80) {
_y = 80;
 
y座標が80より小さいとき、MC"hiyo"のy座標に80を代入

} else if(_y > 195) {
_y = 195;
 
y座標が195より大きいとき、MC"hiyo"のy座標に195を代入 }
}

このスクリプトによってヒヨコの動ける範囲が横は0pxから295px
まで、縦は80pxから195pxまでになります。

withを使うことによってムービークリップ"hiyo"のx座標、y座標を
それぞれ_root.hiyo._x、_root.hiyo._yと書かなければいけないところ
を_x、_yと書くだけですむ
ので書くのが楽だし見やすいでしょ?


次に2フレーム目でナイフを取ったときにすること(アイテムゲット!
の音をならす、次のムービーにとばす)をスクリプトで書きます。


ムービークリップ"inside"内のタイムライン 
レイヤー"action"の2フレーム目

if(turugi.hitTest(_root.hiyo)) {
  this.gotoAndStop("got");
_root.item.start();
_root.item_get.start();
} else { this.gotoAndPlay(_currentframe - 1);
}

>> スクリプト解説
if(turugi.hitTest(_root.hiyo)) {
ムービークリップ'turugi'(画面上真ん中にあるナイフ)がヒヨコと接触したら、
this.gotoAndStop("got");
 
このタイムライン(ムービークリップ'inside'のタイムライン)のフレーム 名"got"で停止
_root.item.start();
 
サウンドオブジェクト'item'を鳴らす

_root.item_get.start();
 
サウンドオブジェクト'item_get'を鳴らす

} else {
this.gotoAndPlay(_currentframe - 1);
 
このタイムラインの今いるフレームの1つ前を再生
  (この場合フレーム1(さっきヒヨコの動ける範囲を制限するスクリプトを
   書いたフレーム)をさしていますね)

}


elseのときのthis.gotoAndPlay(_currentframe - 1);という使い
方はフレームアクションで結構便利です。

この一個前のフレームに戻る。というのはフレームアクションで、な
んどもそのフレーム に書いているスクリプトを実行させたい時によく
使います。というのもフレームアクションはフレームが再生されたと
きだけにそのフレームに書いているスクリプトを実行する
という仕組
みになっているからです。

ちょっと横みちそれましたが、これで家の中にいるときのヒヨコの動け
る範囲を制限でき、ナイフを取ったときに音を鳴らして、フレーム'got'
に移動できるようになりました。





(6) ナイフを手に手に入れたー!!

と、いうことで次はナイフをゲットしてヒヨコが喜び、外に出れるように
なるようにしていきましょう。


1.ナイフを取ってヒヨコが喜ぶムービーを再生するには...


では、ヒヨコをダブルクリックしてください。(どこにいるヒヨコでもOK)
するとムービークリップ"hiyo"のタイムラインに移動します。レイヤー
"hiyo"を見ると、"getKnife"というフレームがあると思います。(下図
参照)

図いれる。

ちょっと再生するか手動でフレームを動かしてもらうとわかると思い
ますが、このフレームはヒヨコがナイフをとって喜んでいるムービー
になっています。これを家の中にあるナイフを取ったとき(ムービー
クリップ"turugi"とムービークリップ"hiyo"がヒットしたとき)
に再生
するようにスクリプトを書けばいいわけです。

再びムービークリップ"inside"のタイムラインに戻ってください。(
どこかわからなくなった人は(5)の始め参照、またはライブラリの
中の"ナイフのもらえる家"
をダブルクリック)

(5)でこのタイムラインのレイヤー"action"の2フレーム目で、ナ
イフとヒヨコがヒットしたら、
フレーム"got"で停止、というスクリプト
を書きました。と、いうことはナイフを取った瞬間フレーム"got"で
停止するということなので、このフレームでヒヨコが喜ぶムービー
を再生させるスクリプトを書きます。


ムービークリップ"inside"内のタイムライン 
フレームラベル"got"の1フレーム目
_root.hiyo.go = false;
_root.hiyo.gotoAndPlay("getKnife");
_root.level = 2;

>> スクリプト解説
_root.hiyo.go = false;
ヒヨコが動けるかどうか制御するための変数goにfalseを代入
_root.hiyo.gotoAndPlay("getKnife");
ムービークリップ"hiyo"のフレーム"getKnife"を再生
_root.level = 2;
ヒヨコのステータスを知る変数levelに2を代入

1行目:ナイフを取って喜んでいるムービーを再生しているときに、
矢印キーを押したままの人がいたらヒヨコが動いてしまうので、
_root.hiyo.go = false; で、矢印キーを押していてもヒヨコが動
かないようにしています。


3行目:
(3)でフレームラベル"stair"(メインタイムライン)の最後の
フレームにlevelの値によって再生するフレームを変えるという命
令をswitch文を使って書きましたよね。ここでナイフを取ったので
ヒヨコはstage1に行けることになるのでlevelに2を代入しています。


2.ヒヨコが喜ぶムービーを再生後...

ナイフを取って喜ぶ場面が再生されました。このあとヒヨコは再
び十字キーで動かせるようになり、ナイフを投げれるようになり
ます。これらを実行させるためのスクリプトを書いていきましょう。

ではもう一度ヒヨコをダブルクリックして、ムービークリップ"hiyo"
のタイムラインに移動してください。喜ぶムービー再生後すぐさっ
き説明したような状態にしたいので、レイヤー"hiyo"のフレーム
"getKnife" の最後のフレームにスクリプトを書きます。


ムービークリップ"hiyo"内のタイムライン 
フレームラベル"getKnife"の最終フレーム

_root.hiyo.go = true;
_root.hiyo.gotoAndStop("front");
_root.hiyo.num = 4;
_root.inside.gotoAndPlay("out");
_root.knifeMC.knife = true;

>> スクリプト解説
_root.hiyo.go = true;
ヒヨコを矢印キーで動かせるようにするために変数goにtrueを代入
this.gotoAndStop("front");
ムービークリップ"hiyo"のフレーム"front"を再生
_root.hiyo.num = 4;
喜ぶムービー終了後、ヒヨコは前を向いているので変数numに4を代入(4は前向き)
_root.inside.gotoAndPlay("out");
ヒヨコが再び外に出れるための出口が出現(見えませんが)するフレーム"out"を再生

_root.knifeMC.knife = true;
ナイフをゲットしたのでナイフを投げれるようにするために変数knifeにtrueを代入

1行目:ナイフを取って喜んでいるムービーが再生し終わったの
でヒヨコを動かせるようにするために再び_root.hiyo.go = true;
として、ヒヨコを矢印キーで動かせるようにします。

2行目:喜ぶムービー終了後、ヒヨコに絶対前を向かせたいので
ヒヨコが前を向いている画像のフレーム"front"に移動させます。

3行目:
2行目でヒヨコが前を向くようにスクリプトでヒヨコが前を
向いているフレームに移動させましたが、ナイフをとった時に押
していた矢印キーの方向は↑か→か←
で、変数numの値は
1か2か3と考えられます
。このままだとヒヨコは前を向いてい
るのにナイフは上か右か左に飛ぶというバグが発生する可能性
があるのでここで変数numに4を代入することによってこのバグを
防いでいます。

5行目:LESSON 6ではムービークリップknifeMCをロードした時
に変数knifeにfalseを代入しました。ここでナイフをゲットしたの
で、ナイフを投げれるようにならなければなりません。knifeにtrue
を代入することによりナイフを投げれるようになります

ナイフを投げるためのスクリプトの条件の中に変数knifeがtrue
だったら...という一文が入っていましたよね!

>>ムービークリップ"knifeMC"のムービークリップアクションの一部
onClipEvent(enterFrame) {
if (Key.isDown(Key.SPACE) && knife == true) {

これでヒヨコは絶対前を向いた状態、ナイフを投げれるようにな
って、ムービークリップ"inside"のフレーム名"out"に移動する
ことができます。




(7) 外に出るぞー!

では(5)家の中で...のはじめに書いてある方法で再びムービー
クリップ"inside"のタイムラインに移動
してください。下図のよう
なタイムラインが出てきます。



(6)より現在、フレーム"out"のタイムライン上にいるはずです。
そしてヒヨコは再び家の中のマップ内を自由に動けるようになり
ました。というわけで、

また(5)と同じ要領で、フレーム名"out"の1フレーム目(全体で
見ると7フレーム目ですね)とその次のフレームで、ヒヨコが外に
出れるための仕掛け、ムービークリップ"exit"にヒットしたら、外
のマップに、それ以外のときは一個前のフレームに戻るというよ
うな感じで作っていきます。

その前に、この画面の一番下にムービークリップ"exit"(ヒヨコ
が外にでるためのきっかけにするためのムービークリップ、下図
の一番下の青い四角)があるので、プロパティのところで"exit"と
名前を付けてください。



レイヤー"action"の7フレーム目でヒヨコの動ける範囲を制限して、
(ヒヨコがニワトリの上にかぶってしまうと絵てきにおかしいので、
ヒヨコの動ける範囲が画面の下3分の2くらいに制限します。)
8フレーム目でムービークリップ"exit"にヒヨコがヒットしたらメイン
タイムラインのフレームラベル"stair"
(階段を上がっているような音
を出すためのフレーム)が再生されるようにしていきます。


ムービークリップ"inside"内のタイムライン 
レイヤー"action"の7フレーム目

with(_root.hiyo) { 
  if(_x < 0) {
_x = 0;
} else if (_x > 295) {
_x = 295; } else if(_y < 80) {
_y = 80; } else if(_y > 195) {
_y = 195;
}
}

(5)で解説しているので解説は省略します。


ムービークリップ"inside"内のタイムライン 
レイヤー"action"の8フレーム目

if(exit.hitTest(_root.hiyo)) {
  _root.gotoAndPlay("stair");
} else { this.gotoAndPlay(_currentframe - 1);
}

>> スクリプト解説
if(exit.hitTest(_root.hiyo)) {
ムービークリップ'exiti'(画面下真ん中にあるMC)がヒヨコと接触したら、
_root.gotoAndPlay("stair");
 
メインタイムラインのフレーム名"stare"を再生

} else {

this.gotoAndPlay(_currentframe - 1);
 
このタイムラインの今いるフレームの1つ前を再生
}

これで家の中にいるときのヒヨコの動ける範囲を制限でき、ムービー
クリップ"exit"にヒヨコが接触すると、階段を上がる音の鳴るムービ
ーを再生することができるようになりました。




(8) STAGE 1へ。

(3)
で説明したように、フレームラベル"stair"の最後のフレームに
下のようなスクリプトが書いてありましたよね。


フレームラベル"stair"(メインタイムライン): 最後のフレーム

switch(level){	
  case 1:      this.gotoAndStop("inHouse");
     break;
  case 2:      this.gotoAndStop("stage1");
     break;
}

今回は変数levelに2が代入されているので、メインタイムラインのフレ
ームラベル"stage1"でストップします。

では最後のスクリプトです!!

上のスクリプトより、メインタイムラインのフレームラベル"stage1"に
移動しました。フレームラベル"stage1r"の1フレーム目(全体で見る
8フレーム目)に下のスクリプトを書きます。

フレームラベル"stage1"(メインタイムライン)1フレーム目

knifeMC.knife = true;
hiyo.go = true; hiyo._x = 250;
hiyo._y = 100;
stop();

>> スクリプト解説
knifeMC.knife = true;
変数knifeにtrueを代入。
hiyo.go = true;
変数knifeにtrueを代入。
hiyo._x = 250;
hiyo._y = 100;
ヒヨコのx座標が250、y座標が100の位置にする。
stop();

1,2行目:変数knife、goにそれぞれtrueを代入してやり、ヒヨコが
ナイフを投げられ、動けるように設定。(すでにtrueになってるはず
なのですが、なってなかったのでもう一度代入しました。)

3,4行目
:ヒヨコは現在ムービーの一番下真ん中にいるので、
家から出てきたように見せるために、左の家のドアの前にいるよう
にx座標、y座標に250、100を代入し、ヒヨコの位置を指定。


長かったですねー。これでやっと終わりです。おつかれさまでした!


Click Here! このレッスンが参考になった!という方はホムペおじさんをクリックしてくれるとうれしいです!!
← ホムペおじさん