忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
【Unity】自機を表示して移動させる【簡単な2DSTGを作ってみるNo.1】

【Unity】自機弾を発射する(プレハブ化する)【簡単な2DSTGを作ってみるNo.2】

【Unity】敵のアニメーション表示と移動(プレハブ化する)【簡単な2DSTGを作ってみるNo.3】

【Unity】自機狙い弾を発射させる【簡単な2DSTGを作ってみるNo.4】

【Unity】背景の表示とオブジェクトの表示順位【簡単な2DSTGを作ってみるNo.5】

【Unity】当たり判定の追加【簡単な2DSTGを作ってみるNo.6】

【Unity】爆破アニメーションの追加【簡単な2DSTGを作ってみるNo.7】

【Unity】タイトル画面の追加(シーン移行)とテキスト表示【簡単な2DSTGを作ってみるNo.8】

【Unity】ボスの追加【簡単な2DSTGを作ってみるNo.9】

敵を倒した時や自機がやられた時に爆破アニメーションを表示させてみます。
まずは下記の画像をAsset内の画像フォルダに保存します。

サムネイル表示になっていますのでクリックしてから保存してください。

追加した画像をUnityで選択してInspectorのSprite ModeをMultipleに変更してからSprite Editorをクリックします。


Sprite Editorが開いたらSliceを押してTypeをGrid By Cell Sizeに変更しX、Yをそれぞれ96に変更してSliceボタンを押すと96x96ドットで画像が分割されます。


分割した画像を全て選択してSceneタブにドラッグ・アンド・ドロップするとアニメファイルを保存するタブが出てきますので任意の名前(今回はbomb.anim)で保存します。


作成されたアニメファイルの再生ボタンみたいなアイコンの方をクリックするとアニメをループするかどうかの選択が出来ます。Loop Timeのチェックを外します。

再生ボタンじゃない方(bomb_0)をダブルクリックするとアニメの再生スピードを変更出来ます。
オレンジの部分をクリックしてSpeedを変更すればOK。今回は2にしておきました。


爆発オブジェクトのアニメーションが終了したら自動的に削除されるようにスクリプトを作成しますので右クリック→Create→C# Scriptでスクリプトを作成。
名前はexplosionとして下記のコードを入力。


スクリプトを保存したらHierarchyタブのbomb_0にアタッチします。
アタッチしたらメニュータブのWindow→Animationを選択しAnimationウインドウを表示します。
Hierarchyタブのbomb_0が選択されている事を確認して画像のようにバーを移動させます。


InspectorタブのFunctionをOnAnimationFinish()に変更すればアニメーションが終了した時にオブジェクトを削除してくれます。


Hierarchyタブのbomb_0の名前をexplosion_prefabに変更してprojectタブのprefabフォルダにドラッグ・アンド・ドロップします。Hierarchyタブのexplosion_prefabは削除しておきましょう。


これで爆発表示の準備は完了です。
enemy0_moveスクリプトを下記のコードに変更します。

 public GameObject explosion_prefab;でInspectorにexplosion_prefabタブを表示させてInstantiate(explosion_prefab, transform.position, Quaternion.identity);で爆破アニメを表示させています。

スクリプトを保存したらprojectタブのenemy0_prefabを選択してInspectorのスクリプトにexplosion_prefabタブが出来ているのでそこにexplosion_prefabをドラッグ・アンド・ドロップします。

この状態で再生させると敵を倒した時に爆破アニメが表示されたと思います。

自機の当たり判定も入れて、やられた後は無敵時間を作って復活する部分も作ってみました。
Hierarchyタブのshipをship_prefabに変更してprojectタブのprefabフォルダにドラッグ・アンド・ドロップします。Hierarchyタブのship_prefabは削除しておきましょう。


time_tableスクリプトで自機を出現させます。

自機が死んだ時の処理もここに書いています。
if(ship_move.pf ==1 )
        {
            ship_time += 1;
            if(ship_time==100)
            {
                Instantiate(ship_Prefab, new Vector3(0, -4, 0), Quaternion.identity);//自機生成
                ship_move.pf = 0;
                ship_time = 0;
            }
        }
ship_timeが100になったら自機を生成するようにしています。
このスクリプトを保存したらInspectorのship_prefabタブにship_prefabをドラッグ・アンド・ドロップします。

自機移動スクリプトも変更します。
ship_moveスクリプト

こちらも同じように public GameObject explosion_prefab;でInspectorにexplosion_prefabタブを表示させてInstantiate(explosion_prefab, transform.position, Quaternion.identity);で爆破アニメを表示させています。

点滅の仕方ですがGetComponentでスプライトの色情報を取得してアルファ値を変化させて点滅してる感じにしています。
こちらのサイト様を参考にさせて頂きました。
【Unity】プレイヤーがダメージを受けた時に点滅させる方法

if (shot_time <= 100)
        {
            float level = Mathf.Abs(Mathf.Sin(Time.time * 50));
            if (shot_time == 100) level = 1f;
            gameObject.GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 1f, level);
        }
自機が死んだらshot_timeを0に戻してshot_timeが100になるまでは点滅させてshot_timeが100になったらアルファ値を100%にしています。shot_timeが100になるまでは当たり判定も行わず無敵時間としてます。
動作させるとこんな感じです。
PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カウンター
Twitter
カレンダー
11 2018/12 01
S M T W T F S
1
2 3 4 5 7 8
9 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
最新コメント
[11/24 kt.]
[11/24 kt.]
[11/24 NONAME]
[11/23 NONAME]
[10/05 tejas]
プロフィール
HN:
kt.
HP:
性別:
男性
自己紹介:
STG大好きな45歳。
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]