Unity2019.2.2f1
Windows10
□
今回はアセットストアで無料でダウンロードでいるクリスマスミュージックを流します。
Christmas Music – Loop Instrumental
スクリプトでループ、中断/再開、そしてシーンをまたいでも曲が続くようにします。
完成動画はこちら。
36秒のクリスマスミュージックをスクリプトでループ、一時中断/再開、そしてシーンをまたいでも続くようにしました。
ついでにサンタ娘がプレゼントを投げまくりますpic.twitter.com/uOlVxdp5EO
— イシゲー@UnityとBlender (@ishidahanta) November 29, 2019
■クリスマスミュージックを流すスクリプト
曲をループさせるのはInspectorからAudioSourceコンポーネントのLoopにチェック入れるだけでできます。
AudioClipに曲を入れてください。
Play On Awakeにチェックを入れるとゲームを実行してすぐに曲が流れます。
でもInspecotr上からではシーン遷移した際にBGMを流すオブジェクトが破棄されるのを防ぐことができないのでスクリプトを書きます。
ついでに右クリックで一時中断/再開、マウススクロールで音量変更できるようにしました。
あと動画では一時中断が分かりづらいだろうとTextが表示されるようにもします。
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
//TextなどのUIを使うのに必要 | |
using UnityEngine.UI; | |
//オブジェクトにAudioSourceコンポーネントを追加 | |
[RequireComponent(typeof(AudioSource))] | |
public class BGM : MonoBehaviour | |
{ | |
//AudioSourceコンポーネントを入れる変数 | |
AudioSource audioSource; | |
//右クリックでオンオフ切り替えるための変数 | |
public bool pause = true; | |
//音量をInspector上で表示するための変数 | |
public float scroll = 0; | |
//Inspector上から「BGM中断」のTextのUIを入れる | |
public Text text; | |
void Start() | |
{ | |
//AudioSourceコンポーネントを取得 | |
audioSource = GetComponent<AudioSource>(); | |
//曲を流す | |
audioSource.Play(); | |
//曲をループさせる | |
audioSource.loop = true; | |
//曲の音量、0~1まで | |
audioSource.volume = 0.5f; | |
//このオブジェクトがシーン遷移しても | |
//破棄されないようにする | |
DontDestroyOnLoad(this.gameObject); | |
//Textを非表示にする | |
text.enabled = false; | |
} | |
void Update() | |
{ | |
//右クリックで起動 | |
if (Input.GetMouseButtonDown(1)) | |
{ | |
//右クリックごとにBool変数が切り替わる | |
if (pause) { | |
//曲を一時中断する | |
audioSource.Pause(); | |
pause = false; | |
//Textを表示する | |
text.enabled = true; | |
} | |
else | |
{ | |
//曲を再開する | |
audioSource.UnPause(); | |
pause = true; | |
//Textを非表示にする | |
text.enabled = false; | |
} | |
} | |
//音量にマウススクロールの値を加える | |
audioSource.volume += Input.GetAxis("Mouse ScrollWheel"); | |
//Inspector上に音量を表示する | |
scroll = audioSource.volume; | |
} | |
} |
スポンサーリンク
■Scene遷移させる
新たなSceneを作り特定のオブジェクトに触れたらScene遷移するようにします。
新たなSceneを作る
File > New Scene
Save as…にすると現在のSceneを複製し新たな名前を付けることができます。
Sceneを登録する
Scene遷移は遷移先のSceneをScenes In Buildに登録していないとできません。
File > Build Settings
登録したいSceneでAdd Open Scenesのボタンを押すか、AssetsのSceneのアイコンをScenes In Buildへドラッグ&ドロップしてください。
スクリプトを設定する
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
//Scene遷移に必要 | |
using UnityEngine.SceneManagement; | |
public class SceneMove : MonoBehaviour | |
{ | |
//Inspector上で遷移先の名前を入れる | |
public string sceneName; | |
//Playerタグがついたオブジェクトに衝突するとSceneが遷移する | |
private void OnCollisionEnter(UnityEngine.Collision collision) | |
{ | |
if (collision.gameObject.tag == "Player") | |
{ | |
SceneManager.LoadScene(sceneName); | |
} | |
} | |
} |
遷移先のSceneの名前をInspector上から入力してください。
このスクリプトが入ったオブジェクトはPlayerタグのオブジェクトに衝突するとScene遷移します。
アタッチするオブジェクトはColliderがついてないといけませんし、衝突する方とされる方のどちらかにRigidbodyがセットされている必要があります。
■プレゼントボックス発射のスクリプト
これは必要ないと思いますがメモがてら紹介します。
移動のスクリプトは以前紹介したこの記事からです。
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
public class PresentFire : MonoBehaviour | |
{ | |
//発射したいオブジェクトを入れる | |
public GameObject present; | |
Rigidbody rb; | |
//発射したい位置に置いた空のオブジェクトを入れる | |
public GameObject shotPos; | |
void Update() | |
{ | |
//左クリックで設定したオブジェクトを生成し発射 | |
if (Input.GetMouseButtonDown(0)) | |
{ | |
//設定したオブジェクトを生成 | |
GameObject copy = Instantiate(present, shotPos.transform.position, | |
Quaternion.identity); | |
//生成したオブジェクトのRigidbodyを取得 | |
rb = copy.GetComponent<Rigidbody>(); | |
//Rigidbodyに力を加えて飛ばす | |
rb.AddForce(transform.forward * 1000 + transform.up * 1000); | |
} | |
} | |
} |
InspectorのPresentには生成したいオブジェクトを、ShotPosにはオブジェクトを生成したい位置に置いた空のオブジェクトを入れます。
空のオブジェクトは操作するオブジェクトの子オブジェクトにすれば一緒に移動します。
■使用したアセット
サンタ娘
Blender標準テクニックの子を改造して作りました。
Unity2018だと今までの髪のテクスチャが使えたのですが、2019に持ってきたら真っ黒になってしまい泣く泣く新たに色をつけた次第です。
Packageで素材の使い回しするのも楽じゃないなとがっくし。
Unity2018版のサンタ娘はこの記事で見れます。
他に使用したアセットはこちらです。
最初のクリスマスの部屋のアセットです。
Winter Forest – Low Poly Toon Battle Arena / Tower Defense Pack
雪が降るローポリのステージのアセットです。
■関連記事
【Blender、Unity】ハロウィンパレード2019の動画を作りました【C#】
【UnityC#講座】ユニティちゃんにボイスをつける【AudioSource】
【Blender、Unity】サンタ娘がトナカイ(?)に乗ってプレゼント爆弾を投げる【C#】
スポンサーリンク