版本: Unity 6 (6000.0)
语言英语
  • C#

TerrainData.SetAlphamaps

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读用户提出的每一个建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public void SetAlphamaps(int x, int y, float[,,] map);

描述

在给定的地图区域分配所有 Splat 值。

提供给此函数的数组决定要替换的部分的宽度和高度。数组的第三维对应于 Splat 贴图纹理的数量。

using UnityEngine;

public class Example : MonoBehaviour { public Terrain t; // Blend the two terrain textures according to the steepness of // the slope at each point. void Start() { float[,,] map = new float[t.terrainData.alphamapWidth, t.terrainData.alphamapHeight, 2];

// For each point on the alphamap... for (int y = 0; y < t.terrainData.alphamapHeight; y++) { for (int x = 0; x < t.terrainData.alphamapWidth; x++) { // Get the normalized terrain coordinate that // corresponds to the point. float normX = x * 1.0f / (t.terrainData.alphamapWidth - 1); float normY = y * 1.0f / (t.terrainData.alphamapHeight - 1);

// Get the steepness value at the normalized coordinate. var angle = t.terrainData.GetSteepness(normX, normY);

// Steepness is given as an angle, 0..90 degrees. Divide // by 90 to get an alpha blending value in the range 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); } }