Объявление
public void SetAlphamaps(int x, int y, float[,,] map);Описание
Назначить все значения знаков в данной области карты.
Массив, передаваемый этой функции, определяет ширину и высоту заменяемой части. Третье измерение массива соответствует количеству текстур splatmap.
using UnityEngine;
public class Example : MonoBehaviour
{
public Terrain t;
// Смешиваем две текстуры ландшафта в соответствии с крутизной
// наклон в каждой точке.
void Start()
{
float[,,] map = new float[t.terrainData.alphamapWidth, t.terrainData.alphamapHeight, 2];
// Для каждой точки на альфа-карте...
for (int y = 0; y < t.terrainData.alphamapHeight; y++)
{
for (int x = 0; x < t.terrainData.alphamapWidth; x++)
{
// Получить нормализованную координату местности, которая
// соответствует точке.
float normX = x * 1.0f / (t.terrainData.alphamapWidth - 1);
float normY = y * 1.0f / (t.terrainData.alphamapHeight - 1);
// Получить значение крутизны по нормализованной координате.
var angle = t.terrainData.GetSteepness(normX, normY);
// Крутизна дается как угол, 0..90 градусов. Разделять
// на 90, чтобы получить значение альфа-смешивания в диапазоне 0..1.
var frac = angle / 90.0;
map[x, y, 0] = (float)frac;
map[x, y, 1] = (float)(1 - frac);
}
}
t.terrainData.SetAlphamaps(0, 0, map);
}
}