首先地形纹理贴图及区域编号定义如下:
根据一个地形单元的4个角是否有某纹理对应4个值:(没有则为0)
4个值相加即该单元的纹理编号:
比如: 左上无(0)+右上有(1)+左下有(8)+右下有(4)=13
根据一个地形单元的4个角是否有悬崖对应一个模型:
比如: 左上无(A)+右上无 (A)+左下有(B)+右下无 (A)=AABA
根据一个地形单元的4个角是否有二层悬崖对应一个模型:
比如: 左上无(A)+右上无 (A)+左下有一层(B)+右下有二层 (C)=AABC
根据一个地形单元的4个角是否有斜坡对应一个模型:
比如: 左上斜坡一高(H)+右上 斜坡一低(L) +左下有一层(B)+右下无 (A)=HLBA
根据一个地形单元的4个角是否有二层 斜坡对应一个模型:
比如: 左上斜坡一高(H) +右上斜坡二高(X) +左下无 (A) +右下无 (A) =HXAA
海水悬崖可以使用向下的悬崖来实现,唯一的区别是模型在y轴乘上了-1。
另外通过该算法配合修改模型还可以实现很多有趣的刷地形效果,比如刷出墙,房子,2d地形等。
刷2d地形
部分实现代码: