おすすめ!自作ゲーム!

【バイサバ!】溜めて、狙って、ぶっ飛ばせ!チャージで全て薙ぎ払うタワーディフェンス!

イメージ
バイサバをBOOTHでも販売開始しました! サーマーセールも合わせて開催! 今なら 50%OFF! の 500円で購入可能 に! ダウンロードは →  https://yamatogamelabs.booth.pm/items/8407425   DLsiteで販売しています。(Bloggerの規約上、リンクは貼れません。 Bye!Bye!Survivor!  もしくは  RJ01621439  で検索してください) デモ版もあるのでまずはお試しから! ■ ゲーム概要 溜めて、狙って、ぶっ飛ばせ! 右クリック長押しでチャージ! 溜めるほど、攻撃がどんどんパワーアップ! 攻撃力・攻撃サイズ・Hit数・クリティカルまで強化される、強力なチャージ攻撃で、押し寄せるスライムをまとめて吹き飛ばそう! 敵をピンポイントで狙い撃つか、 最大までチャージして敵の群れを一気に薙ぎ払うか。 シンプルな操作で、チャージのタイミングと狙いが勝敗を分ける! チャージ攻撃で敵をまとめて撃破! ■ このゲームの魅力 シンプルな操作で、チャージのタイミングと狙いが勝敗を分ける! チャージ攻撃で敵をまとめて撃破! 基本操作は左右移動だけ。 攻撃は自動で行われるので、難しい操作は必要ありません。 そこに加わるのが、強力なチャージ攻撃。 チャージするほど攻撃が強くなり、 大きさやHit数も増加! 大量の敵をまとめて貫通させたり、 強力な一撃で狙った敵を撃ち抜いたり。 いつ撃つか、どこを狙うかはあなた次第! ■ クリスタルを守り抜け! スライムたちは、あなたではなくクリスタルを狙って押し寄せてきます。 敵がクリスタルに到達するとダメージを受け、 HPが0になるとクリスタルが大爆発! そのまま空の彼方へ吹き飛ばされてゲームオーバー! 攻撃だけでなく、クリスタルのHP管理も重要です。 ボスを倒してステージを突破! ステージの最後には強力なボスが登場。 大量のHPを持ち、強力な攻撃を繰り出してきます。 さらに、ボスがクリスタルに到達すると即ゲームオーバー! 敵の攻撃は、こちらの攻撃で相殺することも可能。 迫りくる敵と弾をまとめて薙ぎ払い、 ボスがクリスタルへ到達する前に撃破しよう! ■ オブ...

【Unity】アイテムを作ってみた!【ぴぺっと制作記録4】

アイテムはほぼ固定のゲームばかり作っている大和です。




というか、このやり方以外を知りません!
開き直って👍


ずっとこの方法でやってました


このやり方が正しいのかはわかりませんが、
ずっと創業からのこの方法でやってきました。


考え方は、
  1. アイテムを識別する番号を設定
  2. 上に応じた画像を変更
  3. プレイヤーがアイテムを取得した時、
  4. 番号でアイテムを識別
  5. それに応じたイベントを!

と、いう流れです。





// 実際のプログラム

プログラムはこちら↓

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;

public class Item : MonoBehaviour
{
 // 0 コイン 1 あおあめ 2 あかあめ 3 ゴールドあめ 4 はーとすたー 5 つきちゃんコイン
 public int itemNum = 0;
 [SerializeField] private Sprite[] itemTex = default; // 切り替えるアイテムの画像
 private SpriteRenderer sprite = default;
 private Sequence sequence; 

 // Start is called before the first frame update
 void Start()
 {
  sprite = GetComponent<SpriteRenderer>();
  // アイテムの番号に応じて画像を切り替える
  sprite.sprite = itemTex[itemNum];
 }

 /// <summary>
 /// アイテムの削除
 /// プレイヤーから送られてくる
 /// </summary>
 public void ItemDes()
 {
  sequence.Kill();
  GetComponent<BoxCollider2D>().enabled = false;

  // 削除する ---  一度大きくしたからサイズを0にして消す
  sequence = DOTween.Sequence();
  sequence.Append(transform.DOScale(new Vector3(1, 1), 0.15f))
    .AppendInterval(0.1f)
    .Append(transform.DOScale(new Vector3(), 0.2f))
    .AppendCallback(() => {
     sequence.Kill();
     Destroy(this.gameObject);
    })
    .Play();
 }
}

インスペクターを見るとこんな感じに↓



アイテムを削除するとき、
DOTweenを利用しているので注意。



アイテムの取得はプレイヤー側で行います。

 /// <summary>
 /// 当たり判定
 /// </summary>
 private void OnTriggerEnter2D(Collider2D other)
 {
  
  // アイテム
  if (other.gameObject.CompareTag("Item"))
  {
   Item item = other.gameObject.GetComponent<Item>();
   // アイテムを削除
   item.ItemDes();
  }
 }


↑は、当たり判定の部分だけです。

OnTriggerEnter2Dなどで取得し、アイテムを削除。

他にも、スコアを獲得!なんかの要素があるので、
コンポーネントを取得しています。



まとめ

 
これよりも管理しやすい方法はないかと模索中。
でも、毎回これでいいや!
と、コピペしちゃってます(;^_^A 

このブログの人気の投稿

【バイサバ!】溜めて、狙って、ぶっ飛ばせ!チャージで全て薙ぎ払うタワーディフェンス!

「Unity」地面との当たり判定は、「ContactFilter2D」でいいんじゃない?

Unityでクリックした位置に移動するプログラム