脱出ゲーム始めました!

Unityで作った脱出ゲームを公開しています。拙い作品ですが暇つぶしにでも遊んでいただければ幸いです。
あわせて簡単な脱出ゲームの作り方もまとめています。

トリガーとなるオブジェクトなどがイベント発生で消えてしまう場合
(アイテムをタップして入手する場合など)には問題がありませんが、

残り続けるなどして、意図せずに何度も同じイベントが
起きてしまうのはまずいですね。

そのような場合には bool を使います。

以下、ボタンを押した際、最初の1回だけ音が鳴るスクリプトです。


C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class onseiscript : MonoBehaviour {

    private AudioSource audioSource;

    public AudioClip koukaon;

    bool onlyonetime = false;
   
 // Use this for initialization
 void Start () {

        audioSource = gameObject.GetComponent<AudioSource>();
    }

    public void buttontap()
    {
        if (onlyonetime == false)
        {
            audioSource.PlayOneShot(koukaon);
            onlyonetime = true;
        }
    }
}

イベントの発生条件に bool を入れ、発生と同時に true, false

切り替えることで同じイベントは発生しなくなります。




コルーチンを使います。

以下、ボタンを押したら3秒後にオブジェクトが表示され、
さらに3秒経つと消える
ようにするスクリプトです。


C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {

    public GameObject gameObjectA;

    public void buttontap()
    {
        StartCoroutine("coroutineA");
    }

    IEnumerator coroutineA()
    {
        yield return new WaitForSeconds(3);
        gameObjectA.SetActive(true);

        yield return new WaitForSeconds(3);
        gameObjectA.SetActive(false);
    }
}

gameObjectA はあらかじめ非表示にしておいてください。

StartCoroutine("コルーチン名
"); でカウントを開始、

IEnumerator コルーチン名()
    {
        yield return new WaitForSeconds( );    

    }

() 内に時間を秒数で入れ、(少数の場合は後ろに f を付ける)
その下に命令を書き込んでいきます。


あまり使うことはないかもしれませんが、

StopCoroutine("コルーチン名");


実行中の命令をキャンセルすることも可能です。

前の回までで一応ゲームとしては動きますが少し寂しいですね。
以下のやり方で音を付けましょう。

(音を鳴らすだけならインスペクターでの設定だけでも可能ですが
条件を付ける場合には、script が必要になります)

筆者がよく利用させていただいてる音声素材サイト
  ↓
魔王魂様
効果音ラボ様
無料効果音で遊ぼう!様

下の script を取り付けるオブジェクトに
画面左上から Component>Audio>Audio Source を取り付けます。

(前回までのものを利用するなら MainCamera
Audio Source を取り付け tutorialscriptに以下を加筆してください


C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class onseiscript : MonoBehaviour {

    private AudioSource audioSource;

    public AudioClip bgm1;
    public AudioClip bgm2;
    public AudioClip koukaon1;

 // Use this for initialization
 void Start () {

        audioSource = gameObject.GetComponent<AudioSource>();
        audioSource.clip = bgm1;
        audioSource.Play();
    }

    public void bgmchange()
    {
        audioSource.clip = bgm2;
        audioSource.Play();
    }

    public void soundeffect()
    {
        audioSource.PlayOneShot(koukaon1);
    }
}

bgm1, bgm2, koukaon1
を設定し、適当なボタンを2つ設け、
bgmchage, soundffect(名前は何でもいい)を取り付けます。

ゲームを再生してボタンを押してみてください。


bgmchang ボタンの方は、bgm1 が止まり
ボタンを押すたびに bgm2 が頭から再生されます。
(インスペクターでの設定でループさせることも可能)

soundffect ボタンの方は連続して押した場合、
音が重なって聞こえるはずです。



このように

オーディオソース名.clip = オーディオクリップ名;
オーディオソース名.Play();BGMに、

オーディオソース名.PlayOneShot(オーディオクリップ名);
効果音に利用します




↑このページのトップヘ