(UNITY) 更改 Raycast 与 LineRenderer 脚本发生碰撞的脚本中的值
(UNITY) Changing value in the script that Raycast is colliding with from the LineRenderer Script
好吧,这是一个听起来很混乱的标题,但我很困惑,我不确定如何用几句话来描述。
所以基本上我有一个可以折射镜子的激光脚本,游戏的 object 是将激光折射到接收器中,一旦充满不同激光的第一个房间与其相应的接收器连接,门将打开。在我发现无法检测到 lineRenderer 之前,我在 Reciever 脚本中使用了 OnCollisionEnter。
所以为了测试它,我使用了
if (gameObject.tag == "BLazer")
{
if (hit.collider.tag=="BTarget")
{
GameObject BR11 = GameObject.Find("BlueReceiver11");
Receiver Receiver = BR11.GetComponent<Receiver>();
string TEST= hit.collider.name;
Receiver.HIT = true;
break;
}
可行,但这意味着我必须在脚本中为游戏中的每个接收器输入支票并输入 objects
必须有比这更好的方法
我将在此处包含完整脚本的代码,忽略随机布尔值和整数,全部用于测试
激光脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(LineRenderer))]
public class Lazer : MonoBehaviour
{
public int reflections;
public float maxLength;
public static Lazer instance;
private LineRenderer lineRenderer;
private Ray ray;
private RaycastHit hit;
private Vector3 direction;
public bool BL;
public bool YL;
public bool RL;
public bool BL11;
public bool BL12;
public bool RL12;
public int B;
public int Y;
public int R;
private void Start()
{
instance = this;
}
private void Awake()
{
lineRenderer = GetComponent<LineRenderer>();
}
private void Update()
{
ray = new Ray(transform.position, transform.forward);
lineRenderer.positionCount = 1;
lineRenderer.SetPosition(0, transform.position);
float remainingLength = maxLength;
for (int i = 0; i < reflections; i++)
{
if (Physics.Raycast(ray.origin, ray.direction, out hit, remainingLength))
{
//Debug.Log("Transform Tag is: " + gameObject.tag);
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, hit.point);
remainingLength -= Vector3.Distance(ray.origin,hit.point);
ray = new Ray(hit.point, Vector3.Reflect(ray.direction, hit.normal));
//BLUE LASER
if (gameObject.tag == "BLazer")
{
if (hit.collider.tag=="BTarget")
{
GameObject BR11 = GameObject.Find("BlueReceiver11");
Receiver Receiver = BR11.GetComponent<Receiver>();
string TEST= hit.collider.name;
Receiver.HIT = true;
break;
}
else
{
//BL = false;
Debug.Log("Blue false");
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//YELLOW LASER
else if (gameObject.tag == "YLazer")
{
if (hit.collider.tag == "YTarget")
{
if (YL == false)
{
Y++;
YL = true;
Debug.Log("Yellow hit Yellow! - " + Y);
}
break;
}
else
{
if (YL)
{
Y--;
YL = false;
Debug.Log("Yellow false - "+Y );
}
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//RED LASER
else if (gameObject.tag == "RLazer")
{
if (hit.collider.tag == "RTarget")
{
Debug.Log("Red hit Red! - " + gameObject.tag + " hit " + hit.collider.tag);
RL = true;
break;
}
else {
RL = false;
Debug.Log("Red false");
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
}
else
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, ray.origin + ray.direction * remainingLength);
}
}
}
}
我的(现在很空)接收器class
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Receiver : MonoBehaviour
{
public bool HIT;
private void Update()
{
if (HIT) {
Debug.Log("IT WORKED - " +gameObject.name);
}
}
房间 1 脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Room1 : MonoBehaviour
{
public GameObject Door1;
public GameObject RedReceiver11;
public GameObject RedReceiver12;
public GameObject YellowReceiver11;
public GameObject YellowReceiver12;
public GameObject BlueReceiver11;
public GameObject BlueReceiver22;
public GameObject gdgfdg;
public bool RR11, RR12, YR11, YR12, BR11, BR12;
/*
void Start()
{
GameObject thePlayer = GameObject.Find("First Person Player");
PlayerMovement playerScript = thePlayer.GetComponent<PlayerMovement>();
Debug.Log(playerScript.jumpHeight);
}
*/
private void TEST() {
//RedReceiver11
}
void Update()
{
//If all lasers hitting recievers then raise the door
if (RR11 && RR12 && YR11 && YR12 && BR11 && BR12)
{
Debug.Log("R1 DONE");
if (Door1.transform.position.y < 8)
{
Door1.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
}
}
//if not, keep it close or lower it
else {
if (Door1.transform.position.y > 2)
{
Door1.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
}
}
}
}
如果出于某种原因其他人遇到了这个问题,并且他们的措辞和我一样,我为你能找到你的路而感到自豪,这一定需要一段时间。
我忘了回到这里,但如果有人在未来寻找这个并且被卡住了,我所做的是超级低效且非常不可扩展,但如果您正在寻找一个快速而肮脏的解决方案大声笑
激光变化
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(LineRenderer))]
public class Lazer : MonoBehaviour
{
public int reflections;
public float maxLength;
public static Lazer instance;
private LineRenderer lineRenderer;
private Ray ray;
private RaycastHit hit;
private Vector3 direction;
private void Start()
{
instance = this;
}
private void Awake()
{
lineRenderer = GetComponent<LineRenderer>();
}
private void Update()
{
ray = new Ray(transform.position, transform.forward);
lineRenderer.positionCount = 1;
lineRenderer.SetPosition(0, transform.position);
float remainingLength = maxLength;
for (int i = 0; i < reflections; i++)
{
if (Physics.Raycast(ray.origin, ray.direction, out hit, remainingLength))
{
//Debug.Log("Transform Tag is: " + gameObject.tag);
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, hit.point);
remainingLength -= Vector3.Distance(ray.origin,hit.point);
ray = new Ray(hit.point, Vector3.Reflect(ray.direction, hit.normal));
//Level 1
GameObject BR1 = GameObject.Find("BR1");
Receiver Receiver1 = BR1.GetComponent<Receiver>();
//Level 2
GameObject YR2 = GameObject.Find("YR2");
Receiver Receiver2 = YR2.GetComponent<Receiver>();
//Level 3
GameObject RR3 = GameObject.Find("RR3");
Receiver Receiver3 = RR3.GetComponent<Receiver>();
//Level 4
GameObject BR4 = GameObject.Find("BR4");
Receiver Receiver4A = BR4.GetComponent<Receiver>();
GameObject YR4 = GameObject.Find("YR4");
Receiver Receiver4B = YR4.GetComponent<Receiver>();
//BLUE LASER LEVEL 3
if (gameObject.name == "BL1")
{
if (hit.collider.tag=="BTarget")
{
Receiver1.HIT = true;
break;
}
else
{
Receiver1.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//YELLOW LASER LEVEL 2
else if (gameObject.name == "YL2")
{
if (hit.collider.tag == "YTarget")
{
Receiver2.HIT = true;
break;
}
else
{
Receiver2.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//RED LASER LEVEL 3
else if (gameObject.name == "RL3")
{
if (hit.collider.tag == "RTarget")
{
Receiver3.HIT = true;
break;
}
else
{
Receiver3.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//BLUE AND YELLOW LASER - LEVEL 4
else if (gameObject.name == "BL4")
{
if (hit.collider.tag == "BTarget")
{
Receiver4A.HIT = true;
break;
}
else
{
Receiver4A.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
else if (gameObject.name == "YL4")
{
if (hit.collider.tag == "YTarget")
{
Receiver4B.HIT = true;
break;
}
else
{
Receiver4B.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
else if (gameObject.tag == "BLazer"|| gameObject.tag == "YLazer" || gameObject.tag == "RLazer")
{
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
else
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, ray.origin + ray.direction * remainingLength);
}
}
}
}
然后我在关卡中使用了 GameManager
游戏管理器
using System.Collections;
using System.Collections.Generic; using UnityEngine;
public class GM : MonoBehaviour { public GameObject Gate1; public GameObject DoorL1; public GameObject BR1; //Level 1 Receiver public bool R1;
public GameObject Gate2;
public GameObject DoorL2;
public GameObject YR2; //Level 2 Receiver
public bool R2;
public GameObject Gate3;
public GameObject DoorL3;
public GameObject RR3; //Level 3 Receiver
public bool R3;
public GameObject Gate4;
public GameObject DoorL4A;
public GameObject DoorL4B;
public GameObject BR4; //Level 4 Receiver Blue
public GameObject YR4; //Level 4 Receiver Yellow
public bool R4;
private bool L1Played;
private bool L2Played;
private bool L3Played;
private bool L4Played;
void Update()
{
//ROOM 1
Receiver R1Script = BR1.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R1Script.HIT)
{
Debug.Log("R1 DONE");
if (Gate1.transform.position.y < 8)
{
Gate1.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
if (L1Played == false)
{
Gate1.GetComponent<AudioSource>().Play();
L1Played = true;
}
//FindObjectOfType<AudioManager>().Play("LevelComplete");
DoorL1.SetActive(false);
}
}
//if not, keep it close or lower it
else {
if (Gate1.transform.position.y > 2)
{
Gate1.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL1.SetActive(true);
}
}
//ROOM 2
Receiver R2Script = YR2.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R2Script.HIT)
{
Debug.Log("R2 DONE");
if (Gate2.transform.position.y < 8)
{
Gate2.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
//FindObjectOfType<AudioManager>().Play("LevelComplete");
if (L2Played == false)
{
Gate2.GetComponent<AudioSource>().Play();
L2Played = true;
}
DoorL2.SetActive(false);
}
}
//if not, keep it close or lower it
else
{
if (Gate2.transform.position.y > 2)
{
Gate2.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL2.SetActive(true);
}
}
//ROOM 3
Receiver R3Script = RR3.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R3Script.HIT)
{
Debug.Log("R3 DONE");
if (Gate3.transform.position.y < 8)
{
Gate3.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
//FindObjectOfType<AudioManager>().Play("LevelComplete");
if (L3Played == false)
{
Gate3.GetComponent<AudioSource>().Play();
L3Played = true;
}
DoorL3.SetActive(false);
}
}
//if not, keep it close or lower it
else
{
if (Gate3.transform.position.y > 2)
{
Gate3.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL3.SetActive(true);
}
}
//ROOM 4
Receiver R4ScriptA = BR4.GetComponent<Receiver>();
Receiver R4ScriptB = YR4.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R4ScriptA.HIT && R4ScriptB.HIT)
{
Debug.Log("R4 DONE");
if (Gate4.transform.position.y < 8)
{
Gate4.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
//FindObjectOfType<AudioManager>().Play("LevelComplete");
if (L4Played == false)
{
Gate4.GetComponent<AudioSource>().Play();
L4Played = true;
}
DoorL4A.SetActive(false);
DoorL4B.SetActive(false);
}
}
//if not, keep it close or lower it
else
{
if (Gate4.transform.position.y > 2)
{
Gate4.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL4A.SetActive(false);
DoorL4B.SetActive(false);
}
}
}
}
好吧,这是一个听起来很混乱的标题,但我很困惑,我不确定如何用几句话来描述。 所以基本上我有一个可以折射镜子的激光脚本,游戏的 object 是将激光折射到接收器中,一旦充满不同激光的第一个房间与其相应的接收器连接,门将打开。在我发现无法检测到 lineRenderer 之前,我在 Reciever 脚本中使用了 OnCollisionEnter。 所以为了测试它,我使用了
if (gameObject.tag == "BLazer")
{
if (hit.collider.tag=="BTarget")
{
GameObject BR11 = GameObject.Find("BlueReceiver11");
Receiver Receiver = BR11.GetComponent<Receiver>();
string TEST= hit.collider.name;
Receiver.HIT = true;
break;
}
可行,但这意味着我必须在脚本中为游戏中的每个接收器输入支票并输入 objects 必须有比这更好的方法
我将在此处包含完整脚本的代码,忽略随机布尔值和整数,全部用于测试
激光脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(LineRenderer))]
public class Lazer : MonoBehaviour
{
public int reflections;
public float maxLength;
public static Lazer instance;
private LineRenderer lineRenderer;
private Ray ray;
private RaycastHit hit;
private Vector3 direction;
public bool BL;
public bool YL;
public bool RL;
public bool BL11;
public bool BL12;
public bool RL12;
public int B;
public int Y;
public int R;
private void Start()
{
instance = this;
}
private void Awake()
{
lineRenderer = GetComponent<LineRenderer>();
}
private void Update()
{
ray = new Ray(transform.position, transform.forward);
lineRenderer.positionCount = 1;
lineRenderer.SetPosition(0, transform.position);
float remainingLength = maxLength;
for (int i = 0; i < reflections; i++)
{
if (Physics.Raycast(ray.origin, ray.direction, out hit, remainingLength))
{
//Debug.Log("Transform Tag is: " + gameObject.tag);
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, hit.point);
remainingLength -= Vector3.Distance(ray.origin,hit.point);
ray = new Ray(hit.point, Vector3.Reflect(ray.direction, hit.normal));
//BLUE LASER
if (gameObject.tag == "BLazer")
{
if (hit.collider.tag=="BTarget")
{
GameObject BR11 = GameObject.Find("BlueReceiver11");
Receiver Receiver = BR11.GetComponent<Receiver>();
string TEST= hit.collider.name;
Receiver.HIT = true;
break;
}
else
{
//BL = false;
Debug.Log("Blue false");
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//YELLOW LASER
else if (gameObject.tag == "YLazer")
{
if (hit.collider.tag == "YTarget")
{
if (YL == false)
{
Y++;
YL = true;
Debug.Log("Yellow hit Yellow! - " + Y);
}
break;
}
else
{
if (YL)
{
Y--;
YL = false;
Debug.Log("Yellow false - "+Y );
}
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//RED LASER
else if (gameObject.tag == "RLazer")
{
if (hit.collider.tag == "RTarget")
{
Debug.Log("Red hit Red! - " + gameObject.tag + " hit " + hit.collider.tag);
RL = true;
break;
}
else {
RL = false;
Debug.Log("Red false");
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
}
else
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, ray.origin + ray.direction * remainingLength);
}
}
}
}
我的(现在很空)接收器class
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Receiver : MonoBehaviour
{
public bool HIT;
private void Update()
{
if (HIT) {
Debug.Log("IT WORKED - " +gameObject.name);
}
}
房间 1 脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Room1 : MonoBehaviour
{
public GameObject Door1;
public GameObject RedReceiver11;
public GameObject RedReceiver12;
public GameObject YellowReceiver11;
public GameObject YellowReceiver12;
public GameObject BlueReceiver11;
public GameObject BlueReceiver22;
public GameObject gdgfdg;
public bool RR11, RR12, YR11, YR12, BR11, BR12;
/*
void Start()
{
GameObject thePlayer = GameObject.Find("First Person Player");
PlayerMovement playerScript = thePlayer.GetComponent<PlayerMovement>();
Debug.Log(playerScript.jumpHeight);
}
*/
private void TEST() {
//RedReceiver11
}
void Update()
{
//If all lasers hitting recievers then raise the door
if (RR11 && RR12 && YR11 && YR12 && BR11 && BR12)
{
Debug.Log("R1 DONE");
if (Door1.transform.position.y < 8)
{
Door1.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
}
}
//if not, keep it close or lower it
else {
if (Door1.transform.position.y > 2)
{
Door1.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
}
}
}
}
如果出于某种原因其他人遇到了这个问题,并且他们的措辞和我一样,我为你能找到你的路而感到自豪,这一定需要一段时间。
我忘了回到这里,但如果有人在未来寻找这个并且被卡住了,我所做的是超级低效且非常不可扩展,但如果您正在寻找一个快速而肮脏的解决方案大声笑
激光变化
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(LineRenderer))]
public class Lazer : MonoBehaviour
{
public int reflections;
public float maxLength;
public static Lazer instance;
private LineRenderer lineRenderer;
private Ray ray;
private RaycastHit hit;
private Vector3 direction;
private void Start()
{
instance = this;
}
private void Awake()
{
lineRenderer = GetComponent<LineRenderer>();
}
private void Update()
{
ray = new Ray(transform.position, transform.forward);
lineRenderer.positionCount = 1;
lineRenderer.SetPosition(0, transform.position);
float remainingLength = maxLength;
for (int i = 0; i < reflections; i++)
{
if (Physics.Raycast(ray.origin, ray.direction, out hit, remainingLength))
{
//Debug.Log("Transform Tag is: " + gameObject.tag);
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, hit.point);
remainingLength -= Vector3.Distance(ray.origin,hit.point);
ray = new Ray(hit.point, Vector3.Reflect(ray.direction, hit.normal));
//Level 1
GameObject BR1 = GameObject.Find("BR1");
Receiver Receiver1 = BR1.GetComponent<Receiver>();
//Level 2
GameObject YR2 = GameObject.Find("YR2");
Receiver Receiver2 = YR2.GetComponent<Receiver>();
//Level 3
GameObject RR3 = GameObject.Find("RR3");
Receiver Receiver3 = RR3.GetComponent<Receiver>();
//Level 4
GameObject BR4 = GameObject.Find("BR4");
Receiver Receiver4A = BR4.GetComponent<Receiver>();
GameObject YR4 = GameObject.Find("YR4");
Receiver Receiver4B = YR4.GetComponent<Receiver>();
//BLUE LASER LEVEL 3
if (gameObject.name == "BL1")
{
if (hit.collider.tag=="BTarget")
{
Receiver1.HIT = true;
break;
}
else
{
Receiver1.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//YELLOW LASER LEVEL 2
else if (gameObject.name == "YL2")
{
if (hit.collider.tag == "YTarget")
{
Receiver2.HIT = true;
break;
}
else
{
Receiver2.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//RED LASER LEVEL 3
else if (gameObject.name == "RL3")
{
if (hit.collider.tag == "RTarget")
{
Receiver3.HIT = true;
break;
}
else
{
Receiver3.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
//BLUE AND YELLOW LASER - LEVEL 4
else if (gameObject.name == "BL4")
{
if (hit.collider.tag == "BTarget")
{
Receiver4A.HIT = true;
break;
}
else
{
Receiver4A.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
else if (gameObject.name == "YL4")
{
if (hit.collider.tag == "YTarget")
{
Receiver4B.HIT = true;
break;
}
else
{
Receiver4B.HIT = false;
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
else if (gameObject.tag == "BLazer"|| gameObject.tag == "YLazer" || gameObject.tag == "RLazer")
{
if (hit.collider.tag != "Mirror")
{
break;
}
}
}
else
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, ray.origin + ray.direction * remainingLength);
}
}
}
}
然后我在关卡中使用了 GameManager
游戏管理器
using System.Collections;
using System.Collections.Generic; using UnityEngine;
public class GM : MonoBehaviour { public GameObject Gate1; public GameObject DoorL1; public GameObject BR1; //Level 1 Receiver public bool R1;
public GameObject Gate2;
public GameObject DoorL2;
public GameObject YR2; //Level 2 Receiver
public bool R2;
public GameObject Gate3;
public GameObject DoorL3;
public GameObject RR3; //Level 3 Receiver
public bool R3;
public GameObject Gate4;
public GameObject DoorL4A;
public GameObject DoorL4B;
public GameObject BR4; //Level 4 Receiver Blue
public GameObject YR4; //Level 4 Receiver Yellow
public bool R4;
private bool L1Played;
private bool L2Played;
private bool L3Played;
private bool L4Played;
void Update()
{
//ROOM 1
Receiver R1Script = BR1.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R1Script.HIT)
{
Debug.Log("R1 DONE");
if (Gate1.transform.position.y < 8)
{
Gate1.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
if (L1Played == false)
{
Gate1.GetComponent<AudioSource>().Play();
L1Played = true;
}
//FindObjectOfType<AudioManager>().Play("LevelComplete");
DoorL1.SetActive(false);
}
}
//if not, keep it close or lower it
else {
if (Gate1.transform.position.y > 2)
{
Gate1.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL1.SetActive(true);
}
}
//ROOM 2
Receiver R2Script = YR2.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R2Script.HIT)
{
Debug.Log("R2 DONE");
if (Gate2.transform.position.y < 8)
{
Gate2.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
//FindObjectOfType<AudioManager>().Play("LevelComplete");
if (L2Played == false)
{
Gate2.GetComponent<AudioSource>().Play();
L2Played = true;
}
DoorL2.SetActive(false);
}
}
//if not, keep it close or lower it
else
{
if (Gate2.transform.position.y > 2)
{
Gate2.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL2.SetActive(true);
}
}
//ROOM 3
Receiver R3Script = RR3.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R3Script.HIT)
{
Debug.Log("R3 DONE");
if (Gate3.transform.position.y < 8)
{
Gate3.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
//FindObjectOfType<AudioManager>().Play("LevelComplete");
if (L3Played == false)
{
Gate3.GetComponent<AudioSource>().Play();
L3Played = true;
}
DoorL3.SetActive(false);
}
}
//if not, keep it close or lower it
else
{
if (Gate3.transform.position.y > 2)
{
Gate3.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL3.SetActive(true);
}
}
//ROOM 4
Receiver R4ScriptA = BR4.GetComponent<Receiver>();
Receiver R4ScriptB = YR4.GetComponent<Receiver>();
//If all lasers hitting recievers then raise the door
if (R4ScriptA.HIT && R4ScriptB.HIT)
{
Debug.Log("R4 DONE");
if (Gate4.transform.position.y < 8)
{
Gate4.transform.Translate(Vector3.up * Time.deltaTime, Space.World);
//FindObjectOfType<AudioManager>().Play("LevelComplete");
if (L4Played == false)
{
Gate4.GetComponent<AudioSource>().Play();
L4Played = true;
}
DoorL4A.SetActive(false);
DoorL4B.SetActive(false);
}
}
//if not, keep it close or lower it
else
{
if (Gate4.transform.position.y > 2)
{
Gate4.transform.Translate(Vector3.down * Time.deltaTime, Space.World);
DoorL4A.SetActive(false);
DoorL4B.SetActive(false);
}
}
}
}