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

2020年8月24日

スポンサーリンク

2パターンの方法を紹介

どうも、だらはです。

今回はゲーム作成において必須のLightのON/OFF方法を紹介します。

シチュエーションは、電気ON/OFFスイッチ(SWlightP)のコライダー内でCtrlキー押下すると、LightがON/OFFします。

方法①:1つのライトを操作する場合

下記手順で実装します。

  1. 電気ON/OFFスイッチ(SWLightP)を右クリックし「Light -> Point light」を選択。
  2. Point lightに当たり判定用のコライダーを設定し、「Is Trigger」にチェックを入れる。
  3. 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();
}

// 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;
}
}

方法②:複数のライトを操作する場合

下記手順で実装します。

  1. 電気ON/OFFスイッチ(SWLightP)を右クリックし「Light -> Point light」を選択。
  2. 電気ON/OFFスイッチ(SWLightP)に当たり判定用のコライダーを設定し、「Is Trigger」にチェックを入れる。
  3. 電気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;
}

}

以上です。

◆手っ取り早く外注という選択肢もあり

『ココナラ』というサービスを使うのもお勧めです。私も困ったらよくベテランクリエイターの方に、依頼を投げています。

ゲームを完成させて沢山の方々にプレイして貰うのが目標なので、途中で萎えてゲームが完成しなくなるくらいなら、外注して早く問題解決した方が良いです。



スポンサーリンク

Posted by だらは