public void CreateObject(EnvironmentType envtype, Vector3 startPos) { EnvironmentObject e = Factory.Instance.InitializeObject(envtype, startPos); Vector3 tempCoord = e.transform.position - terr.gameObject.transform.position; Vector3 terrainCoord; terrainCoord.x = tempCoord.x / terr.terrainData.size.x; terrainCoord.y = tempCoord.y / terr.terrainData.size.y; terrainCoord.z = tempCoord.z / terr.terrainData.size.z; e.Initialize(); enemyList.Add(e); int X = (int)(terrainCoord.x * terr.terrainData.heightmapWidth); int Y = (int)(terrainCoord.z * terr.terrainData.heightmapHeight); if (X < 0 || Y < 0 || X > terr.terrainData.heightmapWidth - 2 || Y > terr.terrainData.heightmapHeight - 2) { BugFinished(e); } else { float height = terr.terrainData.GetHeights(X, Y, 1, 1)[0, 0]; Vector3 newHeightPos = e.transform.position; newHeightPos.y = height * terr.terrainData.size.y; e.transform.position = newHeightPos; } }