Several errors in my acceleration script trying to update variables from other scripts
Hi
I'm trying to set up an acceleration script in that uses and updates speed variables from other scripts to create illusion of my 2D car speeding up. But I constantly get the following error... "error CS0176: Static member `Script.variable' cannot be accessed with an instance reference, qualify it with a type name instead ".
The Script in question is: public class GameController : MonoBehaviour {
//Reference all the scripts and assign their variables
private AICar carsSpeed;
private TrackMove trackSpeed;
private CarSpawner spawnTime;
private float acceleration = 1f;
void Start()
{
carsSpeed = GameObject.FindGameObjectWithTag ("EnemyCar").GetComponent<AICar> ();
trackSpeed = GameObject.Find ("TrackMove").GetComponent<TrackMove> ();
spawnTime = GameObject.Find ("CarSpawner").GetComponent<CarSpawner> ();
}
void Update ()
{
Accelerator ();
}
void Accelerator ()
{
if (Input.GetKeyDown (KeyCode.W)) {
carsSpeed.speed += acceleration * Time.deltaTime;
trackSpeed.speed += acceleration * Time.deltaTime;
spawnTime.spawnDelay -= acceleration * Time.deltaTime;
} else {
carsSpeed.speed -= acceleration * Time.deltaTime;
trackSpeed.speed -= acceleration * Time.deltaTime;
spawnTime.spawnDelay += acceleration * Time.deltaTime;
}
}
}
...and the scripts the variables are pulled from are:
public class AICar: MonoBehaviour {
public static float speed;
// Causing instantiated prefabs to move down the y axis
void Update () {
transform.Translate (new Vector3 (0,1,0) * speed * Time.deltaTime);
}
}
public class TrackMove : MonoBehaviour {
public static float speed;
Vector2 offset;
// Update is called once per frame
void Update () {
//FIX: Setup w and s keys to accelerate and decelerate the offset
offset = new Vector2 (0, Time.time * speed);
GetComponent<Renderer> ().material.mainTextureOffset = offset;
}
}
and...
public class CarSpawner : MonoBehaviour {
public GameObject[] npcCars; // Prefab Array
public float spawnDelay = 5f; // Delay between spawns
public float speed = 5f;
Vector3 spawnPos; //Reference Spawn position
float spawnRange = 9f; //Reference the range along the x axis to spawn the sprites
float timer; // Reference the generic timer
int carIndex; //Reference the number of cars in the array
void Start ()
{
timer = spawnDelay;
}
void Update ()
{
timer -= Time.deltaTime;
if (timer <= 0) {
spawnPos = new Vector3 (Random.Range (-spawnRange, spawnRange), transform.position.y, transform.position.z);
carIndex = Random.Range (0, npcCars.Length);
Instantiate (npcCars [carIndex], spawnPos, transform.rotation);
timer = spawnDelay;
}
}
}
I know this is a mouth full, but I hope someone would be able to help me figure this out.
Thanks,
BB
Your answer
Follow this Question
Related Questions
Lives going to negative value 3 Answers
Can't add script to anything. 1 Answer
"Can't add script behaviour AssemblyInfo.cs" 0 Answers
Please Help With Script 1 Answer
How do I access Singleton Pattern Script in Unity3d C# 1 Answer