我正在为我的游戏制作地形编辑器,目前正在使用纹理绘画部分。
我的地形被分成32块的块,每块都有一个"层"纹理尺度为128
所以我的问题是我有这些变量
public int ChunkSize = 32;
public int LayerTextureSize = 128;
我需要做的是从我从光线投射到世界的一个点转换到纹理上的点,当我将LayerTextureSize与ChunkSize相同时,这很容易,因为我可以做到
var hit = Raycast(MousePos);
var chunkX = (int) (hit.x / (TerrainGlobals.ChunkSize));
var chunkY = (int) (hit.y / (TerrainGlobals.ChunkSize));
var pixelPosX = hit.x % (TerrainGlobals.ChunkSize);
var pixelPosY = hit.y % (TerrainGlobals.ChunkSize);
ApplyTexture(chunkX, chunkY, pixelPosX, pixelPosY);
虽然当LayerTextureSize更大,然后ChunkSize它只会画在角落里。 在上面的代码中,我不使用LayerTextureSize,因为这里假设layersize与chunksize相同