- Home /
error with instance of TerrainData?
I have this code:
var terrain : Terrain;
function FixedUpdate()
{
if (Input.GetButton ("Crouch"))
{
if (transform.position.y > terrain.terrainData.GetHeight(transform.position.x, transform.position.y))
{
transform.position.y =transform.position.y - transform.position.y/50;
}
}
}
And I'm getting this error:
"NullReferenceException: Object reference not set to an instance of an object Commander.FixedUpdate ()"
the error comes up when I press crouch and points to the 2nd if statement line.
can anyone help me resolve this error?
Answer by Owen-Reynolds · Mar 20, 2011 at 03:56 AM
Drag your terrain into the terrain
slot in the inspector. terrain
is just a var name, and isn't auto-hooked up to anything, even though is looks like it is.
BUT, you probably want this instead (and can lose the terrain var):
Terrain.activeTerrain.terrainData
Thanks $$anonymous$$uch! I just used your code, but there is only one problem - for some reason it always returns a value around 65 and I have a very uneven terrain, so I don't know what I'm doing wrong but I've found a way working around this whole piece of code so i guess it doesn't matter. thanks though, I'll use this later I'm sure.
Opps! Unity uses x and Z for the ground. You used x and y in GetHeight (which would be correct for 3DS$$anonymous$$ax, blender, etc... .)