So I have a game where planes fly from one town to another, and they can carry disease with them. The disease is randomly given to a town at the start of the game, allowing it to spread to the rest of the towns. Here are the scripts I have right now.
City script (City creation.js)
private var minimumpeople = 1000; //technical vars, determining the max and min # people in the city
private var maximumpeople = 10000;
var people = 0; //the number of people in the town (randomly generated in function Start ())
public var percentinfected = 0.0; //the percent of people in the town that are infected
var airplaneprefab : GameObject; //the airplane prefab
var dmanager : GameObject;
var maincam : GameObject;
var objectpos : Vector3;
var cursorpos : Vector3;
function Start () { //things that happen only once, in the first frame
people = Random.Range(minimumpeople, maximumpeople); //the random generation of the number of people in the city
dmanager = GameObject.FindGameObjectWithTag("Dmanager"); //seting the disease manager var
maincam = GameObject.FindGameObjectWithTag("MainCamera"); //setting the main camera var
}
function Update () {
if(Random.Range(0, 1000) < 1) { //the controller on how often a plane takes off
var jsplane = Instantiate(airplaneprefab, transform.position, transform.rotation); //creating the airplane
jsplane.GetComponent("Airplane").takeoff = gameObject.name; //setting that the town that the plane is coming from
if(percentinfected > 1) {
jsplane.GetComponent("Airplane").infected = true;
}
}
percentinfected = percentinfected * dmanager.GetComponent("DMscript").infectivity; //retreiving the infectivity rate from the disease manager
objectpos = maincam.camera.WorldToScreenPoint(transform.position); //calculating the locations of the mouse, and the positions of the cities on the screen
cursorpos = Input.mousePosition;
if(percentinfected > 1) { //if the town is infected, then it will give off particals (this is for beta testing)
particleSystem.emissionRate = 3;
}
}
Airplane script (Airplane.js)
#pragma strict
private var allcities : Array; //an array of all the cities on the map
var takeoff : String; //where the plane has taken off from
var landing : String; //where the plane will land
var landingcity : GameObject;
public var infected : boolean = false;
function Start () {
allcities = GameObject.FindGameObjectsWithTag("City"); //putting all the cities on the map into an array
landingcity = allcities[Random.Range(0, allcities.length)];
landing = landingcity.gameObject.name;
}
function Update () { //part of the script that makes the plane actualy fly to the destination
transform.LookAt(landingcity.transform); //turn to face the landing city
transform.Translate(0, 0, 0.025); //proceed foreward
if(Vector3.Distance(transform.position, landingcity.transform.position) < 0.3) { //if the airplane is inside the city, it gets destroyed
Destroy(gameObject);
}
if(Vector3.Distance(transform.position, landingcity.transform.position) < 0.4) { //if the airplane is inside the city, it gets destroyed
landingcity.GetComponent("City creation").percentinfected += 1;
}
}
And, finally, Disease manager (DMscript.js) (this one isn’t quite as important, but I decided to include it anyway)
var infectivity = 0.0; //how easiliy the disease spreads
var visibility = 0; //how noticable the disease is
var accessibility = 0; //how easy the disease is to research
var allcities : Array; //an array of all the cities on the map
private var firstinfected : GameObject;
function Start () {
infectivity = Random.Range(1.0, 1.001); //randomizing the disease vars
visibility = Random.Range(0, 100);
accessibility = Random.Range(0, 100);
allcities = GameObject.FindGameObjectsWithTag("City");
firstinfected = allcities[Random.Range(0, allcities.length)];
firstinfected.GetComponent("City creation").percentinfected = 1;
}
I keep getting the error
Assets/Standard Assets/Scripts/Airplane.js(26,59): BCE0019: ‘percentinfected’ is not a member of ‘UnityEngine.Component’.
which doesn’t make any sense…