初級者編

初級者編


エンジンも同時に作っているのでまだ今のエンジンにない部分もあります。

さて、ここは有る程度アイワナを作れるようになったけどもう少しいろいろやってみたい人向けのページです。まだGMに触ってない人は初心者編を見てからこちらに来ることをお勧めします


1、新しい素材を入れよう
 エンジンにもとから入っている素材だけでは物足りない!と思う人が多いと思うので新しい画像や音楽の入れ方を教えます。

 ①Spritesのフォルダ内の好きなところで右クリックして一番上のCreateSpriteまたはInsertSpriteをクリックします。
 ②LoadSpriteを押すと画像を選ぶことができます。③適当に画像を選んでクリック。これでOK。

 同じようにSoundsでやればBGMや効果音、Backgroundsでやれば背景などを準備することができます。


2、背景を変えよう
 1で背景の素材を入れたらさっそく使ってみましょう。

 使いたい部屋をまず開きます。①backgroundsのタブにします
 ②Foreground imageの下にある四角を押して背景にしたい画像を選びます。
 ③Tile HorとTile Vertにチェックを入れると選んだ画像を部屋の中に敷き詰めます。大きな画像を使うより小さな画像を使ったほうが容量などの関係でいいと思います。
 Stretchにチェックを入れると部屋の中ぎりぎりの大きさまで引き延ばします。大きさが小さいとかなり引き延ばされ画像の見た目から変わることもあります。

 一色の背景を使いたい場合は新しい素材を使わずに上のほうにあるColorの右の色をクリックすると色が選べます。


3、新しいオブジェクトを作ろう
 アイワナをエンジンの中のものだけで作っていくとみんな同じようなものができてしまいます。そこで、一味違うアイワナにするために新しいオブジェクトを作るといいと思います。ここでは例としてキッド君が触れると跳ねるブロックを作ってみたいと思います。エンジンの「初級」フォルダの中にある「haneru block」の作り方です。

 ①Objectsのフォルダ内のどこかで右クリックして新しいオブジェクトを作ります。
 ②Nameの右にオブジェクトの名前を入れます。
 ③Spriteの四角を押してスプライトを決めます。もし1で新しい画像を入れていたらここで使ってみてもいいかもしれません。

 で、ここからがオブジェクトづくり
 ④Eventsの下の四角の中で右クリックしてAdd Eventをクリックします。すると④’のような選択肢が出ます。今回はキッド君が触れたときなので、Collisionをクリックして「player」を選びます。これでこのオブジェクトにキッド君があたったとき何が起きるかを書くことができます。
 Eventsのcollision player(④の部分)が青くなってる状態で⑤右のタブをcontrolにして一番左上から6番目のExecute CodeをActionの中にドラッグします。するとメモ帳みたいなのが出てくるのでそこに
with(other){
direction=90;
speed=6;
};
と書きます
 with(other)というのは基本的にcollisionイベント中でしか使えませんが触れている相手(今回の場合キッド君)を指します。{}で囲まれた部分がキッド君に起こる現象です。other以外にオブジェクト名での指定もできるのでplayerと書いても同じようになります。
directionの方向にspeedの速さで動くのでこれの場合上に思いっきり動きますがキッド君には重力が設定されているので落ちてきます。
 よって最終的に跳ねるような動きをさせるブロックができました。
 このオブジェクトの上に針があったりすると罠としては使えそうです


4、ボスを作ろう
 部屋をいくつか作り、1つのステージができてきたところで最後にボスを置きたいと思います。なのでここでは簡単なボスの作り方を説明します。最近多い耐久ボスはまた次の機会に書きます。

 今回作るボスは上下に動いていて一定時間ごとにキッド君に向かってりんごを飛ばしてくるボスです。HPは20で一度倒してアイテムをとるとそのボスを倒したというフラグが立つところまで作ります。

 まず前に書いた新しいオブジェクトを作ろうの①~③と同じようにして新しいボス用のオブジェクトを作ります。
 次に①Parentの横の四角を押してplayerKillerを選びます。これによって針などと同じようにキッド君があたると死ぬ物体になります。
 ②Eventsの下の四角の中で右クリックしてAdd Eventをクリックします。
今回はCreate(オブジェクトが出現したときにおこるイベント)とAlarm 0(0~11それぞれ呼び出されたタイミングで起こるイベント)とstep(毎フレーム起こるイベント)とCollision bullet(Collisionをクリックして「bullet」を選びます)(キッド君の弾にあたったときにおこるイベント)の4つを使います。
 この4か所にそれぞれExecute Code(詳しくはオブジェクトを作ろうの⑤)を入れて中にいろいろ書いていきます。
 ③まずはCreateイベントです。書くことは
hp=20;
direction=90;
speed=3;
alarm[0]=50;
if(global.boss[1]==1){
instance_destroy();
}
 です。
 hpというのは自分で決めた変数名のことで今回はボスのHPを20にするのでhp=20になっています。
 directionというのは動く方向のことで90°(上)に動きだします。
 speedというのは動く速さのことで-にしたらもちろんdirectionで決めた向きとは逆に動き出します。
 alarm[0]というのはalarm 0のイベントを呼び出すまでのフレーム数のことなのでこれの場合50フレーム(1秒)後にalarm 0に書いた内容を行います。
 if(global.boss[1]==1)の部分はglobal.boss[1]という変数が1のとき起こる内容のことで{}にはさまれた部分が実行されます。globalが付いている変数は普通の変数と違ってどのオブジェクトで呼びだしても1つの変数として扱われます。逆にglobalではない変数の場合同じ変数名でもオブジェクトが違えば別の変数という扱いになります。さらにglobal.boss[1~8]の変数は初期設定でセーブされるようにしているのでボスを倒した目印として使う変数になります。この{]の中に書いてあるinstance_destroy()というのはそのオブジェクトを消すという意味なので、もしglobal.boss[1]==1(ボス1を倒していたら)このオブジェクトを消すという行動をします。
 ④次にalarm 0イベントです。書くことは
d=instance_create(x,y,deliciousFruit);
d.speed=8;
d.direction=point_direction(x,y,player.x,player.y);
alarm[0]=30;
 です。
 d=の後に書いてあるinstance_createというのはオブジェクトを出現させる関数なのですがdにはその出現したオブジェクトのIDを変数として保存しています。(たしか・・・)
 もう一度書くことになりますがinstance_create(x,y,obj)というのはオブジェクトを出現させる関数で(x,y)の座標にobjのオブジェクトを出現させることになります。xやyに数字ではなく変数を入れることもできます。そのままxやyを入れた場合出現させる方のオブジェクトのx座標とy座標の同じ座標をとります。これの場合ボスと同じ座標にリンゴが出現します。
 d.directionというのはd(出現したリンゴ)の動く角度のことでここでは自機狙いにするためにpoint_directionという関数を使っています。
 point_direction(x1,y1,x2,y2)というのは(x1,y1)の座標から(x2,y2)の座標への角度を取得する関数です。この場合(x,y)(リンゴ自身)から(player.x,player.y)(playerの座標)への角度を取得しているのでキッド君に向かって飛んでいきます。
 d.speedというのはd(出現したリンゴ)のスピードなのでd.directionで決めたキッド君の方向に飛ぶ速度を決めることができます。
 alarm[0]というのはalarm 0のイベントを呼び出すまでのフレーム数のことなのでこれの場合30フレーム(0.6秒)後にalarm 0に書いた内容を行います。これがalarm 0イベント内に書いてあるということは30フレームごとに何度もこの内容を繰り返すということです。createイベントのときだけ50フレーム後になっているのでこれの場合出現してから50,80,110,140・・・フレームのときにキッド君に向かってリンゴを飛ばすことになります。
 ⑤次にstepイベントです。書くことは
move_bounce_solid(0);
 です。
 move_bounce_solid(0)というのはsolid=1の物体にあたったとき跳ね返るという関数です。0の場合は単純な跳ね返りで1の場合は斜めの壁にぶつかった場合きれいに跳ね返るかどうかの設定です。基本アイワナでは斜めの壁がないので少しでも処理の軽い0のほうでいいと思います。
 ⑥最後にCollision bulletイベントです。書くことは
hp-=1;//hp=hp-1
sound_play(sndBossHit)
with(other){instance_destroy()}
if(hp<=0){
instance_create(672,544,bossitem1);
instance_destroy();
}
 です。
 hp-=1というのはhpというcreateで決めた変数を1減らす動作です。hp=hp-1でも同じ動作になります。
 sound_playというのは新しい素材を入れようで説明したBGMを再生したりするときに使います。今回は弾が当たったときの効果音を鳴らすのに使います。
 with(other){instance_destroy()}であたったほうの弾を消しています。消さないと何度もあたることになるので注意しましょう。
 if(hp<=0)というのはhpという変数が0以下になったら{}の中の行動をするということです。つまりHPが0になったら起こる動作です。
 まずinstance_createのほうでボスを倒したあかしであるbossitem1というオブジェクトを(672,544)という座標に出現します。このオブジェクトのほうにボスを倒したのを記録する変数global.boss[1]を0から1に変えてくれる動作が入っています。
 次にinstance_destroy()のほうでボス自身を消します。これよりも後に何かを書いてもボスのオブジェクト自体がもうないので何もすることができません。

 これで一応ボスと呼べるものができました。
 説明が読んでよくわからなくてもコードの部分だけコピーして後は数値をいじったりしてみるといろんなことがわかるかもしれません。


最終更新:2011年04月07日 00:39
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。