SetHeight
Добавлено: 15 ноя 2017, 13:37
Здравствуйте, уважаемые. Стоит задача менять высоту ландшафта в точке местоположения колеса. Код привожу ниже. В чем собственно проблема: Получаю высоту в нужной точке, понижаю ее и с помощью функции Mathf.Clamp ограничиваю к примеру до 2.9, при высоте Terrain'a = 3. Т.е в точке, где находится колесо, terrain должен понизить высоту на 0.1, но на деле высота падает намного больше. В строке я делю высоту на 1025(Это значение heightmap resolution), иначе на месте колес вырастают горы до максимальной высоты. Нашел методом тыка.
Понимаю, что намудрил и не могу разобраться где именно. Подскажите, пожалуйста, где я ошибся?
Синтаксис:
Используется csharp
modifiedHeights[j, i] = y / 1025f;
Понимаю, что намудрил и не могу разобраться где именно. Подскажите, пожалуйста, где я ошибся?
Синтаксис:
Используется csharp
void FixedUpdate()
{
if (wheel.GetGroundHit(out w_Hit)) {
Controll();
}
}
private void Controll()
{
int xPos = (int)((gameObject.transform.position.x / terrainData.size.x) * heightmapWidth);
int zPos = (int)((gameObject.transform.position.z / terrainData.size.z) * heightmapHeight);
float[,] modifiedHeights = new float[3, 1];
float y = terrainData.GetHeight(xPos, zPos);
y = Mathf.Clamp(y - strength * Time.deltaTime, 2.9f, 3f);
for (int i = 0; i < 1; i++)
{
for (int j = 0; j < 3; j++)
{
modifiedHeights[j, i] = y / 1025f;
}
}
terrainData.SetHeights(xPos, zPos, modifiedHeights);
}
{
if (wheel.GetGroundHit(out w_Hit)) {
Controll();
}
}
private void Controll()
{
int xPos = (int)((gameObject.transform.position.x / terrainData.size.x) * heightmapWidth);
int zPos = (int)((gameObject.transform.position.z / terrainData.size.z) * heightmapHeight);
float[,] modifiedHeights = new float[3, 1];
float y = terrainData.GetHeight(xPos, zPos);
y = Mathf.Clamp(y - strength * Time.deltaTime, 2.9f, 3f);
for (int i = 0; i < 1; i++)
{
for (int j = 0; j < 3; j++)
{
modifiedHeights[j, i] = y / 1025f;
}
}
terrainData.SetHeights(xPos, zPos, modifiedHeights);
}