どうも音無サノトです。
個人的趣味でやっているゲーム制作メモです。
今日の成果
- 時間制限の追加
- 土台が落ちるトラップの追加
- BGMの追加
作業ログ
時間制限の追加
ゲームに緊張感を持たせるため時間制限の処理を追加します。
まずゲームの様々な要素を管理するために「GameController」という空のオブジェクトを用意します。
次に時間を表示するテキストとタイムオーバーになった時のテキストをCanvasプレハブ内に用意します。
先ほど作ったGameControllerに次の処理を追加します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameController : MonoBehaviour
{
public float countTime;
public Text countText;
public Text timeoverText;
void Start()
{
timeoverText.gameObject.SetActive(false);
}
void Update()
{
countTime -= Time.deltaTime;
countText.text = "残り" + countTime.ToString("f1") + "秒";
if(countTime < 0)
{
timeoverText.gameObject.SetActive(true);
Time.timeScale = 0;
}
}
}
UnityではTime.deltaTimeで1フレームの時間を取得できるので、制限時間として設けた数値から引くことでカウントダウンを実装しています。
実装するとこんな感じ。
土台が落ちるトラップの追加
プレイヤーがその土台に触れたら落下するトラップを作ります。
プレイヤーが土台に触れた瞬間、オブジェクトの色を変えて危険だということを知らせます。
その後に土台が落下するという流れの処理を実装します。
これは全部スクリプトでやってしまいます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FallBlock : MonoBehaviour
{
private bool isFall = false;
public int count;
private Vector3 temPosition;
void Update()
{
if(isFall)
{
temPosition = this.transform.position;
temPosition.y = temPosition.y - 0.05f;
this.transform.position = temPosition;
}
}
void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.tag == "Player")
{
StartCoroutine("OnTrap");
}
}
IEnumerator OnTrap()
{
for(int i = 0; i < count ; i++){
GetComponent<Renderer>().material.color = Color.red;
yield return new WaitForSeconds(0.5f);
GetComponent<Renderer>().material.color = Color.gray;
yield return new WaitForSeconds(0.5f);
}
GetComponent<Renderer>().material.color = Color.red;
isFall = true;
}
}
これを落下させたいオブジェクトにつけるだけです。
BGMの追加
やっぱゲームには音楽付けないとダメですよねー。
ということでBGMを追加します。
使う音源は自分がライブ配信用に作ったテキトーBGMがあるので、とりあえずそれを使います。
Unityの音源はAudio Sourceから発生して、それをAudio Listenerでキャッチすることで聞こえるというシステムです。
Audio Listenerはデフォルトでカメラについているので、今回はそのままAudio Sourceをカメラに追加してBGMを実装します。
個人的にはこれが一番簡単。
Audio Sourceを追加したら音源を設定、ループにチェックを入れてボリュームを調整したら完了です。
これで終わり。作業時間3分。いいね。
とりあえず今日はここまで。
プロトタイプとしてはだいぶ形になってきたし、ゲーム制作にも慣れてきました。
来週は続きをやるか、新しいゲームに入るかちょっと考えます。
本日は以上です。最後まで読んでいただきありがとうございました!