我们要开始创造这个游戏世界啦! 先画个角色,之后给这个角色实体定义基础最初的参数。 如下:

角色在哪?(空间位置) pos:{x:y:z} 对于一个2D游戏空间位置Z代表了所在高度,而XY自然就是纵深位置了。 角色体积(碰撞体) size:{x:y:z} 这组数据决定了当前实体的空间占位范围,用来做碰撞啊,重叠啊计算。 角色部件组成(多个精灵体) 精灵体可以理解为实体内部包含的多个其他实体(称之为部件),比如角色背包同角色就是两个实体相对于局部坐标(碰撞体内部)通过部件的pos参数决定所在位置,组成实体。 一组部件合体为一个实体,实体有自己的体积及位置。 就这样我们的2d游戏世界最初的基础设计完成啦。 有的小伙伴就说啦:这个Z参数是不是多余啊? 嗯嗯 我们要做的是一个3维空间的游戏虽然看着是2D的世界。 那么这个Z参数是必须的哦,有了Z 我们就可以实现很多玩法啦。 比如

地形的高度概念

基于Z数据的高度空间实现

磁吸附的实现

跳跃的实现 (嗯嗯游泳待实现)

战斗中跳跃

Z高度的攻击范围
嗯嗯 明天继续更哈~