static failure
I give up, no matter where, I still can't find my mistake. Even Google can't help me. I want some "Savior" to help me find my mistake of my code.
First script:
#pragma strict
var bullet : Rigidbody;
var lazer : Rigidbody;
var shoot : Rigidbody;
var charge_time : float;
public class Charge {
public static var charge_time : float = 2;
function Charge(){charge_time = 2;}
}
function Start () {
}
function Update () {
if (Input.GetKey(KeyCode.Space)){
charge_time -= Time.deltaTime;
if (charge_time <= 0) {
Instantiate(lazer,shoot.position,shoot.rotation);
}
if (Input.GetKeyUp(KeyCode.Space)) {
charge_time = 2;
}
}
if (Input.GetButtonDown("Fire1")) {
var bullets = Instantiate(bullet, transform.position, transform.rotation);
bullets.velocity = transform.TransformDirection(Vector3(0,0,300));
};
}
Second Script:
#pragma strict
var player : GameObject;
var forward : float;
var rotate_H : float;
var rotate_V : float;
var bullet : Rigidbody;
var moving : float = 0;
var charge_time : float = Charge.charge_time;
function Start () {}
function Update () {
print (charge_time);
if (charge_time <=0) {
moving = 0;
}
if (charge_time >=0) {
moving = 1;
}
var move_forward = Input.GetAxis("Vertical") * 5 * moving;
GetComponent.<Rigidbody>().AddRelativeForce
(0, 0, move_forward * 10);
rotate_H += Input.GetAxis("Mouse X") * 10 * moving;
rotate_V -= Input.GetAxis("Mouse Y") * 10 * moving;
if (rotate_V > 50) {rotate_V = 50;};
if (rotate_V < -80) {rotate_V = -80;};
transform.rotation = Quaternion.Euler(rotate_V, rotate_H, 0);
}
What I expected is: "charge_time" is a static variable from the First Script, and, it should be applied in the Second Script. But no, if I leave out the charge_time variable in Second script, it's Unknown Identifiers.
And, if it works, the gameObject should be freezed when charge_time >=0.
Sorry to be like raging, but it wasted alot of time...
'Charge' isn't a static class, meaning you have to create an instance of it when you want to use it.
I cannot explain your problem with accessing charge_time like so:
Charge.charge_time;
But, the reason is doesn't freeze / unfreeze is because you are not updating charge_time in your second script, so it will always be the first value you assigned it to.
If you did:
function Update () {
charge_time = Charge.charge_time;
print (charge_time);
if (charge_time <=0) {
moving = 0;
}
if (charge_time >=0) {
moving = 1;
}
Then your code would freeze / unfreeze the object. I'm assu$$anonymous$$g since you are having accessing Charge.charge_time I doubt that will work. But, for peace of $$anonymous$$d that is why your current code is not working.
Your answer

Follow this Question
Related Questions
static class not functioning 0 Answers
Variables not showing up in Inspector (JavaScript) 2 Answers
yield WaitForseconds not working? 1 Answer
GetComponent is not a member of Object 0 Answers