- Home /
component activate on timer
is it possible to change the if(Input.GetKeyUp(KeyCode.F5)) into a timer of some sort i only need it to runs once and the rest of the script should still enable it
enable script i use to activate currently
EnableTargeting script
using UnityEngine; using System.Collections;
public class EnableTargetting : MonoBehaviour { private Targetting myTarget;
void Start ()
{
myTarget = GetComponent<Targetting>();
}
void Update ()
{
if(Input.GetKeyUp(KeyCode.F5))
{
myTarget.enabled = !myTarget.enabled;
}
}
}
Answer by Visual Programmer · Sep 30, 2013 at 01:41 AM
I use Javascript and the way I quickly do timers is by logging a start time and wait amount and checking if the current time is greater than the sum of both.
JS:
var startTime:float;
var waitInSeconds:float;
function Start(){
startTime = Time.time;
}
function Update(){
if(Time.time > startTime + waitInSeconds){
//run code
}
}
C# -- Use this as a stand-alone component to add another component after specified time.
using UnityEngine;
using System.Collections;
public class timer : MonoBehaviour {
public float waitInSeconds = 1.0F;
public float startTime;
// Use this for initialization
void Start(){
startTime = Time.time;
}
// Update is called once per frame
void Update(){
if(Time.time > startTime + waitInSeconds){
gameObject.AddComponent("nameOfScript");
Destroy (this);
}
}
}
i need it in c# i'm still learning no good at converting from java to c#
^ Updated code above with c#. That should work for you. ^
Answer by scamp · Sep 29, 2013 at 11:57 PM
In C#, Coroutines are the standard method for timer-based logic.
Specifically, check out "WaitForSeconds(float sec)"
This example from the documentation is essentially what you need:
IEnumerator DoCheck() {
for(;;) {
ProximityCheck;
yield return new WaitForSeconds(.1f);
}
}
Just call StartCoroutine("DoCheck") once inside your Start() or Awake() method
Oh, so you just want to enable it one time, which is 1 second after startup. So then you don't need an inifinite loop in your coroutine, just put
IEnumerator Enable$$anonymous$$yTarget()
{
yield return new WaitForSeconds(1f);
myTarget.enabled = !myTarget.enabled;
}
void Start ()
{
myTarget = GetComponent<Targetting>();
StartCoroutine("Enable$$anonymous$$yTarget");
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
c# add/move lines of text in GUI box 1 Answer
c# play particle effect on key press? 1 Answer
Removing dead bodies, big lag issue. 2 Answers