自作アイワナも現時点(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()
}
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回目となる私的備忘録を終了させていただきます。
また、ちょいちょいと更新していきたいと思います(^^♪
<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回目となる私的備忘録を終了させていただきます。
また、ちょいちょいと更新していきたいと思います(^^♪
このコメントは投稿者によって削除されました。
返信削除まねをしようと思い、新しいglobal変数を使おうとしたのですが、wikiにそってスクリプトに記述してもworldのRイベントにerror reading byteとでてしまいます。
返信削除gm8.1 lite、yuuutuエンジンを使っていて、スクリプトやworldは変更を加えていないのですが、どうすればいいかわかりますでしょうか?
この記事に記載しているglobal.timeのように、すでにエンジンで宣言されているものは問題ないのですが、新たに作ろうとするとエラーが出ますよね。
削除実は、私も昔このglobal変数でアイテム分を追加しようとしてエラーが出て、色々とネット上で情報を調べ、半日くらい掛けてあれこれ試したのですが、結果エラーは解消せず。別の変数で代用。
ですので、私自身もその解決方法が分かりません。ご質問いただいたのに、申し訳ありません。
花火弾幕から出るobject1000の数を変えるにはどうすればいいですか?
返信削除アイワナ制作初心者なので分かりません。
できれば、「~個出すには~にする」とかの例を出してくれると分かりやすいです。
>花火弾幕から出る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){
となります。
ご丁寧な回答ありがとうございます。
削除for文の使い方が分かりました。