【Unity】コピペで使える!LightのON/OFF方法。

2パターンの方法を紹介
どうも、だらはです。
今回はゲーム作成において必須のLightのON/OFF方法を紹介します。
シチュエーションは、電気ON/OFFスイッチ(SWlightP)のコライダー内でCtrlキー押下すると、LightがON/OFFします。
方法①:1つのライトを操作する場合
下記手順で実装します。
- 電気ON/OFFスイッチ(SWLightP)を右クリックし「Light -> Point light」を選択。
- Point lightに当たり判定用のコライダーを設定し、「Is Trigger」にチェックを入れる。
- Point lightに電気ON/OFF用のスクリプトを設定。
3のスクリプトは下記をコピペで作成してください。
using UnityEngine;
using System.Collections;public class FlgLight : MonoBehaviour {
private Light myLight;
private bool near;// Use this for initialization
void Start () {
near = false;
myLight = GetComponent<Light>();
}// Update is called once per frame
void Update () {
if (Input.GetButtonDown(“Fire1") && near)
{
myLight.enabled = !myLight.enabled;
}
}void OnTriggerEnter(Collider collider)
{
if (collider.gameObject.name == “unitychan")
{
near = true;
}
}void OnTriggerExit(Collider collider)
{
near = false;
}
}
方法②:複数のライトを操作する場合
下記手順で実装します。
- 電気ON/OFFスイッチ(SWLightP)を右クリックし「Light -> Point light」を選択。
- 電気ON/OFFスイッチ(SWLightP)に当たり判定用のコライダーを設定し、「Is Trigger」にチェックを入れる。
- 電気ON/OFFスイッチ(SWLightP)に、電気ON/OFF用のスクリプトを設定。
3のスクリプトは下記をコピペで作成してください。
using UnityEngine;
using System.Collections;public class FlgLightParent : MonoBehaviour {
private bool LightOn;
private bool near;// Use this for initialization
void Start () {
near = false;
foreach (Transform child in transform)
{
child.gameObject.SetActive(false);
LightOn = false;
}
}// Update is called once per frame
void Update () {
if (Input.GetButtonDown(“Fire1") && near)
{if (LightOn == false)
{
foreach (Transform child in transform)
{
child.gameObject.SetActive(true);
LightOn = true;
}
}
else
{
foreach (Transform child in transform)
{
child.gameObject.SetActive(false);
LightOn = false;
}
}
}
}void OnTriggerEnter(Collider collider)
{
if (collider.gameObject.name == “unitychan")
{
near = true;
}
}void OnTriggerExit(Collider collider)
{
near = false;
}}
以上です。
◆手っ取り早く外注という選択肢もあり
『ココナラ』というサービスを使うのもお勧めです。私も困ったらよくベテランクリエイターの方に、依頼を投げています。
ゲームを完成させて沢山の方々にプレイして貰うのが目標なので、途中で萎えてゲームが完成しなくなるくらいなら、外注して早く問題解決した方が良いです。
ディスカッション
コメント一覧
まだ、コメントがありません