おすすめ!自作ゲーム!

【サマーセール参戦】夏休みは『バイサバ』を遊び尽くせ!今だけ驚異の【50%OFF】で爆速サバライフを始めよう!

イメージ
ついに待ちに待った夏休みが到来! まとまった休みのお供に、熱中できるゲームを探していませんか? そんなあなたに超ビッグニュースです! 手軽なのに奥が深い、中毒者続出中の超爽快防衛アクション『バイサバ』が、なんとサマーセールに電撃参戦! 過去最大級のお得なチャンスを見逃すな! 🔥 衝撃の「50%OFF」!今が一番始めどき! 今回のサマーセール期間中、『バイサバ』は驚愕の【50%OFF(半額)】でお買い求めいただけます! ワンコイン感覚でポチれるこの価格は、まさに破格。 「気になっていたけど、まだ触れていなかった」「友達に勧められて迷っていた」という方は、 ぶっちゃけ今買わない理由がありません! 🎮 そもそも『バイサバ』ってどんなゲーム? 「安くなってるのは分かったけど、どんなゲームなの?」という方のために、本作の魅力を3つのポイントでサクッとご紹介します! 操作は超カンタン「左右移動」だけ! 基本の攻撃はすべてオート(自動)。ゲーム初心者でも、キーボードを左右に動かすだけで、バシバシ敵を倒せる圧倒的お手軽さ! 右クリック長押しの「チャージ攻撃」が爽快すぎる! ここぞという時に放つチャージ攻撃は、威力も範囲もHit数もすべてが「倍!バイ!Bye!」。画面を埋め尽くすスライムや邪魔な岩を一瞬で吹き飛ばす快感は、一度味わうと病みつきです! 奥深い「ビルド構築」と「サポート必殺技」! ただ火力を上げるだけでは通用しない特殊なステージも多数存在。様々なアイテムを組み合わせた自分だけの「ビルド」と、キャラごとの「超強力な必殺技」で難関を突破する戦略性もバツグンです! ☀️ 夏休みは『バイサバ』で「時間泥棒」されちゃおう! 手軽に5分だけ遊ぶも良し、コイン稼ぎステージを周回してガッツリ金策に励むも良し。気づけば「え、もうこんな時間!?」となること間違いなしの、最強の“時間泥棒”ゲームです。 クリスタルをお弁当で癒やしながら、お空の彼方に吹っ飛ぶ(ゲームオーバー)恐怖のボスを撃破し、この夏一番の爽快感を体験してみませんか? 📝 セール情報まとめ セール内容: 『バイサバ』本体が 50%OFF(半額) 開催期間: [~9月14日まで] ぜひこのお得な機会に『バイサバ』を手に入れて、最高の夏休みにしてくださいね!ステージでお待ちしています! Bye!Bye!Survivo...

【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で子オブジェクトをすべて取得したり、1つだったり

このブログについて