おすすめ!自作ゲーム!

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

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

【Unity】タイマー作り【ぴぺっと制作記録1】

まずは簡単なところから作ろう!
ということで、タイマーを設置します。

 


このゲームは時間内にクリアすることが目的です。


そこまで時間に追われる感は出さず、
じっくり考えてクリアできるようにしたい。


なので、制限時間は長め。
とりあえず、99秒以内にクリアすることを目的にします。


作ってみたタイマー


 「Time.deltaTime」を使います。
 
最後のフレームからの経過時間[ms]が格納されています。
つまり前回のUpdate()からの経過時間がとれます。

というもので、Unityではよく使うものだと思います。


完成するとこんな感じに↓




流れはこんな感じに



頭の中の映像をまずは文字にしてみます。

  1. 経過時間用の変数を作り
  2. 表示するタイマー用の変数を作り
  3. void Update() の中で変数にTime.deltaTimeの値を加える
  4. もしも、1より大きくなったら
  5. タイマーを1減らして
  6. 経過時間用の変数を初期化!

で、問題ないんじゃないかなと。


実際のプログラムはこんな感じに



書いてみたプログラムはこうなりました↓

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GM : MonoBehaviour
{
 private UI ui = default; // UIを更新するために
 private float timeCount = 0; // 経過時間用
 private int time = 99; // 表示する時間

 // Start is called before the first frame update
 void Start()
 {
  // 取得しておく
  ui = GetComponent<UI>();
 }

 // Update is called once per frame
 void Update()
 {
  // --- UIの更新 -----
  // タイマーの更新
  ui.Timer(time);


  // --- 時間 -----
  timeCount += Time.deltaTime;
  // 1より大きくなったら
  if (timeCount >= 1)
  {
   // 初期化する
   timeCount = 0;
   // タイマーを1減らす
   time -= 1;
  }
 }
}


UIは別に作ってまとめておきたかったので、
UI管理用のプログラムは↓になります。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UI : MonoBehaviour
{
 // タイマーを表示するテキスト
 [SerializeField] private Text timerText = default;
 // タイマー更新用
 public void Timer(int num)
 {
  // タイマーをテキストで表示
  timerText.text = num.ToString();
 }
}


シンプルですが問題ないはず。


表示用のUIは↓のように作ってあります。




あとは、0になったらゲームオーバー!
などの処理を追加したりです。


参考にしたサイト


このブログの人気の投稿

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

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

このブログについて