じゅんG の Game Blog: 【第2回】弾などのオブジェクトを大きく(小さく)していく/無限ジャンプをできるようにする【アイワナ制作備忘録】

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

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

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

2017年10月9日月曜日

【第2回】弾などのオブジェクトを大きく(小さく)していく/無限ジャンプをできるようにする【アイワナ制作備忘録】


まだ記憶が新しいうちに、次の記事を書いていきましょうか(^^

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


【メモNo.3/弾などのオブジェクトを徐々に大きく(小さく)していく方法】

まず、オブジェクト等の画像を大きく(小さく)する変数は、

・image_xscale ///横の大きさ  1が元、0.5で半分、2で倍
・image_yscale ///縦の大きさ  1が元、0.5で半分、2で倍

になります。

これを弾のオブジェクト内に、例えば、

・Create内
 move_towards_point(player.x,player.y,3)
 alarm[0]=25

・Alarm0内
 image_xscale+=0.05
 image_yscale+=0.05
 alarm[0]=2

と記述すれば、この弾のオブジェクトが生成されたと同時にキッド君へ向かって飛んでいきつつ、一定時間で徐々に大きくなっていくという演出ができます。


※徐々に小さくしたいときは、image_xscale&image_yscaleの値を徐々にマイナスしていけばオッケーです。但し、image_scale値が0を下回ると、画像が反転し反対に大きくなっていってしまうので、徐々に小さくしたいときは、弾のオブジェクトのAlarm0内のコードを以下のようにした方がよいでしょう。

・Alarm0内
 if(image_xscale>0 && image_yscale>0){
 image_xscale-=0.02
 image_yscale-=0.02
 alarm[0]=2
 }

 if(image_xscale<=0 && image_yscale<=0){
 instance_destroy()
 }

これで、画像のサイズが0になったとき(つまり視覚から消えたとき)に対象が削除され、消えているのに当たり判定が残るという現象も回避できます。



【メモNo.4/特定のルームにおいて無限ジャンプをできるようにする方法】

これは超個人的で且つ超応急的な方法になるかもしれませんが、私は以下の方法でおこなっています。

まず、画面全体を覆うようなスプライト(画像)を作成します。(Size:800*608)


そして、これのイベントコード内に以下のように記述します。

・Create内
 image_alpha=0

・player内
 player.djump = true ///2段ジャンプが行える状態を常に真にする

・player2内
 player2.djump = true


あとは、このオブジェクトを特定のルームの最背面に配置すれば無限ジャンプができるようになります。こうすれば、特定のルームだけ無限ジャンプが行えますし、また不要になればそのオブジェクトをルームから削除すればいいだけなので、比較的簡単な方法かな~と思います。(というか、この方法しか思い付かなかっただけというww)


17/10/14 追記
若しくは、何某かのオブジェクト(32*32等)のSTEPイベント内に、

player.djump=1
player2.djump=1

-----又は、

with(player){
djump=true
}
with(player2){
djump=true
}

と記述しても、同じく動作するようです。



ということで、これにて第2回のアイワナ制作備忘録を終了したいと思います(^^

2 件のコメント:

  1. 画面全体を覆うようなスプライトを作るってのは最初の自分も活用してましたねw、DC1のラスボスの当たり判定を全体にする為にそんな感じにしてた覚えがある。今ではwith文を活用してますが。
    with文というのはwith(オブジェクト){コード記入欄}こんな感じで構成されるのですが、()内のオブジェクトに対し、{ }内のコードを実行するというものです。
    例として
    オブジェクトAの何かしらのイベントに
    with(さくらんぼ){
    speed=5
    direction=180}
    このように記入すると、オブジェクトAがいるルーム内にあるさくらんぼ全てに対してspeedを5にし、directionを180にしてくれます。
    playerのdjumpをtrueにするのでしたら、
    オブジェクトBのステップイベントに、
    with(player){
    djump=true}
    with(player2){
    djump=true}
    こうすると、オブジェクトBがいるルーム内ではキッド君は無限ジャンプができます。
    ちなみに、反転した状態のキッド君はplayerではなく、player2というオブジェクト名となっています。間違いやすい所なので気を付けておきましょう。
    どうでしょうか?、上手く伝わってくれたら嬉しい限りです。
    耐久ボスでもよく使われる文ですので覚えておいて損はないでしょう。アイワナ作成頑張って下さい!。

    返信削除
  2. おお!情報提供ありがとうございます!!
    私「player2」の意味がいまいち分かっておらず、まあどちらもやっておけば問題ないだろうという気持ちでいましたが、これでようやく理解ができました!^^
    助かりました!また、大変勉強になって嬉しいです!!

    返信削除