最終更新: tikura_ackey 2012年12月06日(木) 00:27:45履歴
※エンジンによって針の設定などが異なります、
今回のエンジンはyuuutueditionです、違うエンジンの場合は注意して書いてください
凝っているアイワナをやっていると、飛んできた針が止まったりすることがあります、
針を止めると罠の幅も広がったり、色々と便利なものです。
今回は、飛ぶ針を止める処理を書いてみましょう!
まずは飛ぶ針の設定を見てみましょう、
Createコード:
depth=1000002
これは針をタイルの裏に隠す処理です、今回は気にしないでいいと思います、
stepコード:
if(hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
}
以下省略
これが、今回弄るコードです、
針の止め方ですが、今回はalarmイベントを使って止めてみたいと思います。
まず、飛んだ瞬間にアラームを発動させるようにします、
if(hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
alarm[0]=time;
}
こう書くとalarm[0]が変数timeの分動きます
alarm[0]のコードは
speed=0;
speedという変数を0にするだけでhspeedもvspeedも0に出来ます
これで止まる処理が書けました・・・と思いきや
実はこれでは針が止まらないんです
さきほど言ったようにhspeedもvspeedも0になると今度は、
Createイベントで針の動かす設定が発動するからです。
if(hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
alarm[0]=time;
}
ということで、針を飛ばす処理を一回しか行わないようにしましょう
if(flag=0&&hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
alarm[0]=time;
flag=1;
}
こうすると、flag==0の時のみ処理が行われ、
その処理内でflag=1にしています。
「flagなんて変数使ってないよー」
と思うかもしれませんが、GameMakerでは未定義の変数を0として扱うようになってるんです
ゲームの詳しい設定のErrorsのTreat uninitialized variables as value 0にチェックが入ってるはずです
timeという変数も定義していないと0になりますね
それは恐らく止めないという設定でしょうが、多分バグが有ると思います。
timeを設定してなかったらアラームを使わないようにしましょう、
if(flag=0&&hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
if(time!=0){
alarm[0]=time;
}
flag=1;
}
こうすれば針が止まる処理が完成です!
バグ等ありましたらコメントでご報告お願いします。
今回のエンジンはyuuutueditionです、違うエンジンの場合は注意して書いてください
凝っているアイワナをやっていると、飛んできた針が止まったりすることがあります、
針を止めると罠の幅も広がったり、色々と便利なものです。
今回は、飛ぶ針を止める処理を書いてみましょう!
まずは飛ぶ針の設定を見てみましょう、
Createコード:
depth=1000002
これは針をタイルの裏に隠す処理です、今回は気にしないでいいと思います、
stepコード:
if(hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
}
以下省略
これが、今回弄るコードです、
針の止め方ですが、今回はalarmイベントを使って止めてみたいと思います。
まず、飛んだ瞬間にアラームを発動させるようにします、
if(hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
alarm[0]=time;
}
こう書くとalarm[0]が変数timeの分動きます
alarm[0]のコードは
speed=0;
speedという変数を0にするだけでhspeedもvspeedも0に出来ます
これで止まる処理が書けました・・・と思いきや
実はこれでは針が止まらないんです
さきほど言ったようにhspeedもvspeedも0になると今度は、
Createイベントで針の動かす設定が発動するからです。
if(hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
alarm[0]=time;
}
ということで、針を飛ばす処理を一回しか行わないようにしましょう
if(flag=0&&hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
alarm[0]=time;
flag=1;
}
こうすると、flag==0の時のみ処理が行われ、
その処理内でflag=1にしています。
「flagなんて変数使ってないよー」
と思うかもしれませんが、GameMakerでは未定義の変数を0として扱うようになってるんです
ゲームの詳しい設定のErrorsのTreat uninitialized variables as value 0にチェックが入ってるはずです
timeという変数も定義していないと0になりますね
それは恐らく止めないという設定でしょうが、多分バグが有ると思います。
timeを設定してなかったらアラームを使わないようにしましょう、
if(flag=0&&hspeed=0&&vspeed=0&&freetrigger.triggered=trg){
hspeed=h;
vspeed=v;
if(time!=0){
alarm[0]=time;
}
flag=1;
}
こうすれば針が止まる処理が完成です!
バグ等ありましたらコメントでご報告お願いします。
最新コメント