※ 初心者向け記事です。
はじめに
ホラーゲームで、暗い部屋で懐中電灯つけたり、スイッチ押したら電球がついたりするギミックがよくあると思います。
それをどうやって実装するのか調べただけの記事です。
本記事では、懐中電灯を実装する例で進めます。
動作確認環境
- Windows 10
- Unity 2018.2.21f Personal
事前準備
3Dで新規プロジェクトを作成します。
次に、Hospital Horror Pack をアセットストアからImportします。
このAssetに含まれているDemoSceneに懐中電灯を追加してみます。
エラー解消したい場合
Importすると、下記のようなエラーが発生している状態になりました。
Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs(91,34): error CS0619: `UnityEditor.BuildTargetGroup.WebPlayer' is obsolete: `WebPlayer was removed in 5.4, consider using WebGL'
91行目は、コメントアウトでOKです。(たぶん)
実装方法
Lightを追加
はじめに懐中電灯のコンポーネントを追加します。
Hospital Horror PackのSceneでは、Cameraは「FPSController」→「FirstPersonCharacter」に含まれています。
Add Componentボタンを押下して、Lightを追加します。
TypeはSpot、
RangeとSpot Angleは、50とします。
もちろん絶対に50にしろということではなく、Sceneに合わせて値を調整してください。
Buttonを追加
つぎにButtonを追加します。
Hierarchyタブで右クリックして、「UI」→「Button」を押下します。
そうすると、CanvasとButtonが追加されると思います。
Gameタブを見ながら、ボタンを配置を変更してください。
Scriptを追加
つきはScriptを用意します。
パスはどこでもいいです。
筆者はScriptsフォルダを新規作成して、そこに作成したcsファイルを配置しています。
命名以外は、ほぼUnity公式のコピペです。
公式では Update()
内に実装しています。
今回はボタンを押下をトリガーにするため、 OnClickXXX()
を作成、実装します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpotLightController : MonoBehaviour {
private Light spotLight; // ON/OFFするライト
// Use this for initialization
void Start ()
{
spotLight = GetComponent<Light>();
}
// Update is called once per frame
void Update ()
{
}
public void OnClickLightButton()
{
spotLight.enabled = !spotLight.enabled;
}
}
Scriptをアタッチ/イベントを設定
FirstPersonCharacterに、さきほど作成したScriptをアタッチします。
最後に、Buttonの On Click()
項目を設定します。
スクショの通りに設定すればOKです。
これでボタンを押下して、懐中電灯のLightがON/OFFできればOKです。