- Home /
Help with setting the size of a GameObject using bounds
Hello
I am currently trying to instantiate a vehicle in a garage scene. The player can use the left and right button to change the vehicle. However one problem which I noticed was that not all of my vehicle models were the same size when created (numerous artists) and so some were very small when instantiated and some were very large.
My question is how I can make sure that all of the cars are the same space in Unity Units. After looking up the problem, in Unity Answers and in the Documentation, I saw that Renderer.Bounds.Max was probably the best way to do this, but I'm currently having some problem understanding and using it.
Heres my code
using UnityEngine;
using System.Collections;
public class ChooseCar : MonoBehaviour {
public GameObject DisplayVehicle;
public GameObject [] VehiclePrefab;
public int WhichCar;
void Start ()
{
InstantiateDisplay();
}
void Update ()
{
if (Input.GetKeyDown(KeyCode.RightArrow))
{
WhichCar++;
if (WhichCar > VehiclePrefab.Length-1)
{
WhichCar = 0;
}
InstantiateDisplay();
}
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
WhichCar--;
if (WhichCar < 0)
{
WhichCar = VehiclePrefab.Length-1;
}
InstantiateDisplay();
}
}
void InstantiateDisplay ()
{
Destroy(DisplayVehicle);
DisplayVehicle = Instantiate(
VehiclePrefab[WhichCar]
);
Vector3 max = DisplayVehicle.GetComponent<Bounds>().max;
Debug.Log(max);
}
}
As you can see, I have not even set the size of the DisplayVehicle to the size of the Bounds.max, I have only gotten as far as trying to find the variable that is the size of all the vehicles. Even now, I get the error
"ArgumentException: GetComponent requires that the requested component 'Bounds' derives from MonoBehaviour or Component or is an interface. UnityEngine.GameObject.GetComponent[Bounds] () ChooseCar.InstantiateDisplay () (at Assets/Scripts/ChooseCar.cs:45) ChooseCar.Update () (at Assets/Scripts/ChooseCar.cs:24)"
I am really stuck here and any help would be greatly appreciated
Thank you
The bounds are of a mesh and the mesh is in a meshrenderer. So it's more like.
DisplayVehicle.GetComponent<$$anonymous$$eshRenderer>().$$anonymous$$esh.Bounds.max;