先日ゾンビ部屋を作ったので、タイトル画面をつけてUnityで画面遷移してみたいと思います。
タイトル画面の背景
やりたいことは画面遷移なので、タイトル画面はなんでもいいんだけど、せっかくだから雰囲気出すために町にゾンビがウヨウヨしてる感じを表現してみる。
それっぽい家のAssetsを見つけたのでこれを使います。
UK Terraced Houses Pack FREE - Asset Store
例によってダウンロード/インポートしておく。
Assets -> UK Terraced Houses FREE -> Prefabsの下にある家を適当に画面に配置していきます。
ちなみにInspectorの下の黒いバーを上にドラッグすると、選択しているPrefabのビジュアルが見えるので便利。


こんな感じに配置。

正面に並んだ家が見えるようにMain Cameraを移動する。
Position X:-16, Y:2, Z:-12 Rotation X:0, Y:90, Z:0
ゾンビさん達を配置
続いてAssets -> Prefabs -> ZombieからHierarchyにドラッグしてゾンビを3体適当に配置。どこでもいいんだけど、全員同じ方向に歩いてると不自然なので、それぞれRotationのYをバラバラにした。
3体目はカメラより後ろに配置して、後ろからでてくるようにする。

前回と同じフリーのゾンビさんを使ってるので、ちょっとアニメーションを調整します。
walk_in_placeを外して、最初からちゃんと歩くようにします。また、GoWalkというBool値のパラメータを定義しておく。

Hierarchy -> ZombieにNew ScriptをAdd Componentします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ZombieController : MonoBehaviour
{
Animator animator;
float time = 0f; // 単位: 秒
public float thresholdTime = 5f;
void Start () {
animator = GetComponent<Animator>();
}
void FixedUpdate()
{
time += Time.deltaTime;
if (time > thresholdTime) {
animator.SetBool("GoWalk", true);
}
}
}
Threshold TimeをInspectorから上書きできるようになるので、3体のゾンビさんにバラバラの値を設定しておきます。

この数値はゾンビが歩き出すまでの時間を制御していて、全てのゾンビがピッタリ合わせて歩くのを防いでいます。もうちょっと良いやり方あるかも知れないけど分からんので一旦これで。
そういえば、よく見かけるdeltaTimeってなんだろうなって思ったら、下記エントリに解説が載ってた。
Unity - 一定時間で消えるオブジェクトをつくる - おれ、Unity2Dでゲーム作るんだ。
画面遷移するボタン
クリックしたら画面遷移するボタンを配置します。Hierarchy -> Create -> UI -> Buttonすると、Canvas,Button,EventSystemなどが設置される。
Buttonがよく分からん場所に配置されてたりするので、Pos X, Pos Y, Pos Zの座標を全て0に設定しておく。
続いてButtonにNew ScriptをAdd Componentする。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ButtonHandler : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void OnClick() {
Debug.Log("Button click!");
SceneManager.LoadScene ("Room");
}
}
Button -> Inspector -> Button(Script) -> On Click()を設定する。

よっしゃこれでいけるだろ!とやってみたらエラーでた。
Scene 'Room' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded. To add a scene to the build settings use the menu File->Build Settings... UnityEngine.SceneManagement.SceneManager:LoadScene(String) ButtonHandler:OnClick() (at Assets/ButtonHandler.cs:21) UnityEngine.EventSystems.EventSystem:Update()
RoomなんてSceneはねえよボケってことらしいので、RoomのSceneを開いている状態でFile -> Build Settings -> Scenes In Build -> Add Open Scenesしておく。これでOK。

試してみたら無事画面遷移出来ました!


BGMを設定
せっかくなので雰囲気が出るようにBGMを設定します。いつもお世話になっているフリー素材屋さんへ。
フリーBGM素材 『不気味な部屋』 試聴ページ|フリーBGM DOVA-SYNDROME
ダウンロードしたmp3ファイルをProject -> Audiosフォルダにドラッグしておき、Hierarchy -> Create -> Audio -> Audio Sourceで追加したファイルを選択する。
やりました!不気味なBGMが流れます!