じゅんG の Game Blog: 【第1回】でかいリンゴの消滅と共に拡散弾を放つ/エンドルームに入った瞬間に経過時間を止める【アイワナ制作備忘録】

YouTubeにて、アイワナ実況動画を公開しています。

YouTubeにて、アイワナ実況動画を公開しています。

※自作アイワナは、このブログの下部よりダウンロードできます。

2017年10月7日土曜日

【第1回】でかいリンゴの消滅と共に拡散弾を放つ/エンドルームに入った瞬間に経過時間を止める【アイワナ制作備忘録】


自作アイワナも現時点(17/10/7)で4作品となり、その各制作過程でも「あれ、これ前回どうやって実現させたんだっけ?」と各演出や弾幕の作成で「???」となることが多く、その度に過去の作品のコードを見たり、ネットで色々と調べたりを繰り返しておりました。

そこで今回からは、私のこのブログで私なりのやり方にはなりますが、自身の備忘録として、そしてどなたかの制作過程におけるヒントになれば幸いと思い、これから少しずつにはなりますが、制作エッセンスをここに記していきたいと考えています。

【はじめに/注意事項など】
・使用しているGMは、Ver8.1 Liteになります。
・使用しているアイワナエンジンは、I wanna be the engine yuuutu editionです。
・自作アイワナで使用したもののみの掲載となります。
・あくまで私なりのやり方ですので、もちろんもっと簡単な方法もあるかもしれません。参考程度とご認識ください。
・だいたい1記事でメモ2個くらいの掲載で進めていきます。※更新頻度は不定期
・ご質問にも極力お答え致しますが、掲載外の質問にはお答えできません。



【メモNo.1/飛ばした一つのでかいリンゴが一定時間で爆発し、拡散弾(固定)を撒き散らす方法】


★用意するもの★
・でかいリンゴを飛ばす本体(ここでは、jung_bossとします)
・でかいリンゴ(ここでは、object1000_bigとします)
・でかいリンゴ爆発後に拡散するリンゴ(ここでは、object1000とします)


次に、それぞれのイベント等に以下を記述します。(速度等の数値は任意で構いません)

<jung_boss>


・Create内
 instance_create(jung_boss.x,jung_boss.y,object1000_big)
 alarm[0]=50

・Alarm0内
 instance_create(jung_boss.x,jung_boss.y,object1000_big)
 alarm[0]=50


<object1000_big>


・Create内(Set direction and speed of motion部分)
 direction: random(360)
 speed: 5

・Create内(記述部分)
 spt=0
 alarm[0]=30

・Alarm0内
 if(spt=0){
 for(i=0;i<=360;i+=20){ ///i+=○○の値を360で割り切れる数に変更すれば、拡散弾の数が変わる。
 abs=instance_create(object1000_big.x,object1000_big.y,object1000)
 abs.speed = 4
 abs.direction = i
 }
 instance_destroy()
 }
///spt、absは任意の変数


<object1000>
・特になし


どうでしょうか?
実行してみると、鬼畜花火のような弾幕が確認できるのではないでしょうか。
あとは場面に応じて、任意に数字等を調整していけばオッケーです(^^



【メモNo.2/設定したゲームのエンドルーム(最後の部屋)に入った瞬間に、経過時間(プレイタイム)を止める方法】



まず、ゲーム内でプレイ時間を進めているコードがある箇所はどこかといいますと、Objects ⇒ Player_etc ⇒ playerのイベント内、Alarm0の中にあります。


これを私なりの方法(というか、かなり応急的ww)になりますが、まず、ゲームスタートした時の最初のルームで何某かのグローバル変数を0で宣言し、ゲームクリア時の最後のルームに入った瞬間に、そのグローバル変数を1にします。
そして、上記時間を進めるコードの箇所に以下の記述を足すだけで、クリアした瞬間にゲームの経過時間を止めることができます。(ここでは、global.item[1]というグローバル変数を使っています)


if(room != rInit && room != rMenu && room != rTitle && room != rSelectStage){

if(global.item[1]=0){  ///←このあたりを追記
global.time += 1;
}


alarm[0] = room_speed;




という感じで、第1回目となる私的備忘録を終了させていただきます。

また、ちょいちょいと更新していきたいと思います(^^♪

6 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除
  2. まねをしようと思い、新しいglobal変数を使おうとしたのですが、wikiにそってスクリプトに記述してもworldのRイベントにerror reading byteとでてしまいます。
    gm8.1 lite、yuuutuエンジンを使っていて、スクリプトやworldは変更を加えていないのですが、どうすればいいかわかりますでしょうか?

    返信削除
    返信
    1. この記事に記載しているglobal.timeのように、すでにエンジンで宣言されているものは問題ないのですが、新たに作ろうとするとエラーが出ますよね。
      実は、私も昔このglobal変数でアイテム分を追加しようとしてエラーが出て、色々とネット上で情報を調べ、半日くらい掛けてあれこれ試したのですが、結果エラーは解消せず。別の変数で代用。
      ですので、私自身もその解決方法が分かりません。ご質問いただいたのに、申し訳ありません。

      削除
  3. 花火弾幕から出るobject1000の数を変えるにはどうすればいいですか?
    アイワナ制作初心者なので分かりません。
    できれば、「~個出すには~にする」とかの例を出してくれると分かりやすいです。

    返信削除
    返信
    1. >花火弾幕から出るobject1000の数を変えるにはどうすればいいですか?
      拡散する弾幕の数を変更するということでいいでしょうか?
      であれば、例文のオブジェクト<object1000_big の Alarm0内>の中にある構文

      for(i=0;i<=360;i+=20){

      の中身を変えると拡散数を変更できます。
      これは、角度0°から360°の中で20°ずつの間隔で弾を出すという意味になるので、上記だと、拡散数は18個となります。
      なので例えば、

      36個出したい(拡散させたい)なら、
      for(i=0;i<=360;i+=10){

      12個なら、
      for(i=0;i<=360;i+=30){

      9個なら、
      for(i=0;i<=360;i+=40){

      6個なら、
      for(i=0;i<=360;i+=60){

      となります。

      削除
    2. ご丁寧な回答ありがとうございます。
      for文の使い方が分かりました。

      削除