Страница 1 из 1

SetHeight

СообщениеДобавлено: 15 ноя 2017, 13:37
juv231
Здравствуйте, уважаемые. Стоит задача менять высоту ландшафта в точке местоположения колеса. Код привожу ниже. В чем собственно проблема: Получаю высоту в нужной точке, понижаю ее и с помощью функции Mathf.Clamp ограничиваю к примеру до 2.9, при высоте Terrain'a = 3. Т.е в точке, где находится колесо, terrain должен понизить высоту на 0.1, но на деле высота падает намного больше. В строке
Синтаксис:
Используется csharp
modifiedHeights[j, i] = y / 1025f;
я делю высоту на 1025(Это значение heightmap resolution), иначе на месте колес вырастают горы до максимальной высоты. Нашел методом тыка.
Понимаю, что намудрил и не могу разобраться где именно. Подскажите, пожалуйста, где я ошибся?
Синтаксис:
Используется 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);
    }

Re: SetHeight

СообщениеДобавлено: 15 ноя 2017, 14:30
alt3d
Тебе нужно делить не на 1025 (разрешение heightmap), а на высоту террейна.
terrainData.size.y - если не ошибаюсь.

modifiedHeights[j, i] = y / terrainData.size.y;

Re: SetHeight

СообщениеДобавлено: 15 ноя 2017, 15:02
juv231
О, Господи. Вы правы! Спасибо!

Re: SetHeight

СообщениеДобавлено: 15 ноя 2017, 15:13
juv231
При деформации ландшафта проседает FPS до 2-5. Как можно оптимизировать? Уменьшать карту высот (height resolution) и размер terrain? Крутить Pixel Erorr? Есть еще какие-то варианты?

Re: SetHeight

СообщениеДобавлено: 16 ноя 2017, 09:17
alt3d
juv231 писал(а):При деформации ландшафта проседает FPS до 2-5. Как можно оптимизировать? Уменьшать карту высот (height resolution) и размер terrain? Крутить Pixel Erorr? Есть еще какие-то варианты?


1. Делить большой террейн на несколько маленьких.
2. Отказаться от террейна, сделать/купить свою систему на мешах.

PixelError - он только для оптимизации рендера, вроде. Это немного не то.

Re: SetHeight

СообщениеДобавлено: 16 ноя 2017, 11:19
juv231
Спасибо!