This question was
closed May 14, 2016 at 10:10 AM by
meat5000 for the following reason:
Duplicate Question
Question by
Maryam.Bakhtawar · May 14, 2016 at 09:40 AM ·
c#unity 5object reference
How to show an object based on timer variable in another script?
I want to reveal a specific arrow pointing at a specific location using the ArrowOnOff code when the timer variable in CheckpointTimer turns to 0.
However, I can't figure out how to connect the two scripts to get this working. (My implementation of finding/revealing arrows in ArrowOnOff isn't the best, I know - I plan to ask a separate question for that, so please don't focus on it.)
Here are my scripts:
ArrowOnOff.cs:
using UnityEngine;
using System.Collections;
public class ArrowsOnOff : MonoBehaviour {
// Use this for initialization
void Start () {
GameObject.Find ("Arrow1").transform.localScale = new Vector3(0, 0, 0);
GameObject.Find ("Arrow (2)").transform.localScale = new Vector3(0, 0, 0);
/*
[...]
*/
GameObject.Find ("Arrow (28)").transform.localScale = new Vector3(0, 0, 0);
GameObject.Find ("Arrow (21)").transform.localScale = new Vector3(0, 0, 0);
}
// Update is called once per frame
void Update () {
}
//-------
void OnTriggerEnter(Collider col)
{
if (col.tag == "1")
{
Debug.Log ("hit");
GameObject.Find ("Arrow1").transform.localScale = new Vector3(1, 1, 1);
}
///---------
if (col.tag == "2")
{
Debug.Log ("hit");
GameObject.Find ("Arrow (2)").transform.localScale = new Vector3(1, 1, 1);
}
/*
[...]
*/
if (col.tag == "30")
{
Debug.Log ("hit");
GameObject.Find ("Arrow (28)").transform.localScale = new Vector3(1, 1, 1);
}
///---------
if (col.tag == "24AGAIN")
{
Debug.Log ("hit");
GameObject.Find ("Arrow (21)").transform.localScale = new Vector3(1, 1, 1);
}
/// -------
}
//--------------------------------------------------------
void OnTriggerExit(Collider col)
{
if (col.tag == "1")
{
GameObject.Find ("Arrow1").transform.localScale = new Vector3(0, 0, 0);
Debug.Log ("Left");
}
///---------
if (col.tag == "2")
{
Debug.Log ("hit2");
GameObject.Find ("Arrow (2)").transform.localScale = new Vector3(0, 0, 0);
}
/*
[...]
*/
if (col.tag == "30")
{
Debug.Log ("hit");
GameObject.Find ("Arrow (28)").transform.localScale = new Vector3(0, 0, 0);
}
/// -------
if (col.tag == "24AGAIN")
{
Debug.Log ("hit");
GameObject.Find ("Arrow (21)").transform.localScale = new Vector3(0, 0, 0);
}
}
//----------
}
CheckpointTimer.cs:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class CheckpointTimer : MonoBehaviour {
public Text timerText;
public int startTime = 3;
private float timer;
public GameObject greenImage;
public GameObject redImage;*
// Use this for initialization
void Start () {
timer = startTime;
}
// Update is called once per frame
void Update () {
if (entered) {
timer -= Time.deltaTime;
timerText.text = timer.ToString ("0");
if (timer <= 0) {
player.GetComponent<OVRPlayerController> ().Acceleration = 0.1f;
timer = startTime;
entered = false;
redImage.SetActive (false);
greenImage.SetActive (true);
}
}
}
bool entered = false;
GameObject player;
void OnTriggerEnter(Collider collider) {
if (collider.gameObject.tag == "Player") {
player = collider.gameObject;
player.GetComponent<OVRPlayerController> ().Acceleration = 0;
entered = true;
redImage.SetActive (true);
greenImage.SetActive (false);
}
}
void OnTriggerExit(Collider collider) {
timer = startTime;
timerText.text = "";
entered = false;
greenImage.SetActive (false);
}
}
Comment
Follow this Question
Related Questions
Why is object reference not set to an instance? 1 Answer
Loot table problems 1 Answer
Rotation script issue? 2 Answers
Game crashes on iPhone 11 0 Answers
Play animation 10 seconds, after play other animation 1 Answer