- Home /
Change car models on keypress
Can someone help me minimize and develop more of this code, There are 24 different cars 12 normal 12 cop cars, would be nice if I could press a key ( Spacebar) and would cycle/change trough normal cars on every press, and once I press a specific key let's say (P) from police it will switch to that version of cop car
var model_01: GameObject;
var model_02: GameObject;
var model_03: GameObject;
var model_04: GameObject;
var model_05: GameObject;
var model_06: GameObject;
var model_07: GameObject;
var model_08: GameObject;
var model_09: GameObject;
var model_10: GameObject;
var model_11: GameObject;
var model_12: GameObject;
function Start()
{
model_01.SetActive(true);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
function Update(){
if (Input.GetKeyDown ("1"))
{
model_01.SetActive(true);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("2"))
{
model_01.SetActive(false);
model_02.SetActive(true);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("3"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(true);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("4"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(true);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("5"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(true);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("6"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(true);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("7"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(true);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("8"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(true);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("9"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(true);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("0"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(true);
model_11.SetActive(false);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("-"))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(true);
model_12.SetActive(false);
}
else if (Input.GetKeyDown ("="))
{
model_01.SetActive(false);
model_02.SetActive(false);
model_03.SetActive(false);
model_04.SetActive(false);
model_05.SetActive(false);
model_06.SetActive(false);
model_07.SetActive(false);
model_08.SetActive(false);
model_09.SetActive(false);
model_10.SetActive(false);
model_11.SetActive(false);
model_12.SetActive(true);
}
}
it is running in Update(), it just declaring what to be visible at Start() and what not
Why not loop through the cars and check if it has a certain name then display said car, so name police cars police$$anonymous$$odelA, police$$anonymous$$odelB, etc and check if the name contains "police" or "cop". etc
Also I personally would just use 4 controls, left and right to go down the list, and up and down to swap car type. I would put the cars into different lists or layer the list so 1-4 is a cop car and 5-8 is some other car and when you are searching for cop cars if you get to element 5 you either stop at 4 or jump back to 1.
etc...
Use Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Alpha0) for "0" Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Alpha1) for "1" etc...
also there are tons of ways to make your code clearer. For instance you could put them into array of type Transform[] than write a method that resets all cars (iterate over array). and than on each button you could just first reset all the cars and than call array[0].gameObject.SetActive(true). for example...
Ins$$anonymous$$d of using model_11.SetActive(false); Use model_11.gameObject.SetActive(false); I'm sure that's your problem
Answer by Alex_TNT · Mar 27, 2015 at 11:18 AM
code on unity forum I made with help of 2 guys
public var cars : GameObject[];
public var carsPolice : GameObject[];
// What car is active at start
public var carNumber:int = 2;
function Start ()
{
for( var i: int=0; i < cars.Length; i++){
cars[i].SetActive(false);
}
cars[carNumber].SetActive(true);
}
function Update(){
if (Input.GetKeyUp ("space"))
{
if(carNumber < cars.Length -1) {
carNumber++;
} else {
carNumber=0;
}
changeCars(carNumber);
}
// Toggle Police Version of the car
if (cars[carNumber].activeInHierarchy == true && Input.GetKeyDown ("p")){
cars[carNumber].SetActive(false);
carsPolice[carNumber].SetActive(true);
}
else if(Input.GetKeyDown ("p"))
{
cars[carNumber].SetActive(true);
carsPolice[carNumber].SetActive(false);
}
//
}
function changeCars(carNumber:int){
for( var i: int=0; i < cars.Length; i++){
cars[i].SetActive(false);
carsPolice[i].SetActive(false);
}
cars[carNumber].SetActive(true);
}