2.5D视角大地图建筑层级逻辑

求助:


这种2.5D视角,建筑都是按格子布置的,怎么处理建筑物之间的层级逻辑呢?

本人理解两个格子块之间的判断关系:


第一种情况,小建筑在大建筑上,蓝色线以上时,条件:2.row < X.row && 1.cel <= Y.cel;


第一种情况,小建筑在大建筑左,红色线以左时,条件:2.cel < X.cel && 1.row <= Y.row;

两个建筑之间,不管是几乘几,这个判断都OK,但是建筑一多了以后,排序就会混乱。。。

不知道怎么搞了

row 和 cel 都是从最上面角的点开始的,箭头方向划错了

有z轴啊 isoToScreen 函数中 z2 = (x+z) * 0.866 - y * 0.707

啥意思,没懂 :sweat_smile:

等角坐标转换成屏幕坐标的时候 不要只算xy,把z轴也算出来,可以根据这个z排序

public static readonly Y_CORRECT:Number = Math.cos(-Math.PI / 6) * Math.SQRT2;
public static isoToScreen(p: Vec3):Vec3
{
const sp: Vec2 = new Vec2();
sp.x = p.x - p.z;
sp.y = p.y * Y_CORRECT + (pos.x + pos.z) * 0.5;
sp.z = (p.x + p.z) * 0.866 - p.y * 0.707;
return sp;
}

你这个是打算做什么游戏?

类似江南百景图

1赞

没那么复杂,2D遮挡仅限于屏幕上的像素y轴

参考这个
云风的 BLOG: 斜视角游戏的地图渲染 (codingnow.com)

2赞