I am trying my best to have my object which this code has been attached to react with a simple plane which has been tagged with the name “pann” , when my object touches pann it should respawn and generate a GUI window saying “you died”
Here is my code
var speed =4.0;
var rotateSpeed =4.0;
var dicePrefab : Transform ; // TRANSFORM
private var panel = false;
function OnControllerColliderHit (hit: ControllerColliderHit)
{
if(hit.gameObject.tag == "pann")
{
panel= true;
}
}
function Update () {
var controller : CharacterController = GetComponent (CharacterController);
transform.Rotate (0, Input.GetAxis ("Horizontal")* rotateSpeed , 0);
var forward =transform. TransformDirection (Vector3 .forward);
var curSpeed =speed* Input.GetAxis ("Vertical");
controller.SimpleMove (forward * curSpeed);
}
function LateUpdate ()
if (panel)
{
transform.position = Vector3 (80,50,0);
// gameObject.Find()
// I tried putting a gui box here / OnGUI doesnt seem to work anywhere in this code.
panel = false ;
}
}
It’s apparently not working with your onGUI() function just because the box with text “you died” immediately disappearing.
Try:
function OnGUI ()
if (panel)
{
transform.position = Vector3 (80,50,0);
// gameObject.Find()
// I tried putting a gui box here / OnGUI doesnt seem to work anywhere in this code.
///panel = false ; /// Here's the point; make it false in other way/place
}
}
You should use a float timer variable instead of the boolean panel, because the box must stay in screen during some time, then disappear and move the character to the respawn position. Change your code to this:
var speed =4.0;
var rotateSpeed =4.0;
var dicePrefab : Transform ; // TRANSFORM
function Update () {
var controller : CharacterController = GetComponent (CharacterController);
transform.Rotate (0, Input.GetAxis ("Horizontal")* rotateSpeed , 0);
var forward = transform.TransformDirection (Vector3.forward);
var curSpeed = speed * Input.GetAxis("Vertical");
controller.SimpleMove (forward * curSpeed);
}
private var timer: float = 0;
function OnControllerColliderHit (hit: ControllerColliderHit){
if(hit.gameObject.tag == "pann"){
timer = 3; // load the timer with 3 seconds
}
}
function OnGUI(){
if (timer > 0){ // if timer not zeroed, display the box
var r = Rect((Screen.width-210)/2, (Screen.height-80)/2, 210, 80);
GUI.Box(r, "You're dead!");
}
}
function LateUpdate(){
if (timer > 0){ // if timer not zeroed yet...
timer -= Time.deltaTime; // decrement timer...
if (timer <= 0){ // if zeroed, move player to respawn point
transform.position = Vector3 (80,50,0);
}
}
}