[DirectX]2D游戏地形碰撞及半透明遮挡有关问题。
[DirectX]2D游戏地形碰撞及半透明遮挡问题。。
先看参考图:(该图尺寸为1024×1024,版面所限,复制链接可以查看全图)
0:参考图说明
·上图中红色菱形框代表不可通行
·人物的脚部矩形RECT用于碰撞检测及遮挡检测
1:概述:
【地图场景】根据地形图素手工绘制或直接用整张图(我的地图与建物的设计有些不同,地形可能是用矩形拼的,也可能是整张图,而建物则是以菱形摆放的)
【地图信息文件】记录所有菱形地图块的属性:建物编号,是否可通行
【地图建物文件】由各个png格式的建物图片打包而成
【建物信息文件】保存所有建物数据:图片索引、宽高
【角色信息文件】保存所有角色的图片索引、8方向的碰撞矩形RECT
另外人物在地图中的XY坐标以人物图片左上角0,0为基准
2:渲染顺序
·渲染地形—第1层
·渲染人物—第2层
·渲染建物—第3层
·渲染人物的半透明遮挡部分
3:人物的碰撞检测
人物每走一个单位,就判断人物的碰撞矩形RECT所占据的所有菱形地图块,如果人物移动的目标位置周边均无障碍,则可通行,否则不可通行。
4:半透明遮挡检测
人物每行走一个单位,判断人物的碰撞矩形RECT所占据的地图块类型,然后找到该地图块在人物RECT的left的位置上最低障碍的bottom值(即,从人物碰撞矩形RECT的left处开始,向下找该地图块最低的碰撞RECT)如果该位置低于人物碰撞RECT的bottom值,则说明产生了遮挡,然后以半透明方式再次渲染该人物。
欢迎研究2D游戏的朋友来讨论。。。
------解决方案--------------------
不管怎么说,我早就开发过2D游戏。你呢?
------解决方案--------------------
其实我的理解是,他是想说,当图像叠加时,重合部分的状态设一个透明点的状态
------解决方案--------------------
好吧我承认,以你的资源,无法使用我所说的渲染方法。
技术是没有对错的。我现在也可以这么说。
错的是人,以及他所使用的资源。
先看参考图:(该图尺寸为1024×1024,版面所限,复制链接可以查看全图)
0:参考图说明
·上图中红色菱形框代表不可通行
·人物的脚部矩形RECT用于碰撞检测及遮挡检测
1:概述:
【地图场景】根据地形图素手工绘制或直接用整张图(我的地图与建物的设计有些不同,地形可能是用矩形拼的,也可能是整张图,而建物则是以菱形摆放的)
【地图信息文件】记录所有菱形地图块的属性:建物编号,是否可通行
【地图建物文件】由各个png格式的建物图片打包而成
【建物信息文件】保存所有建物数据:图片索引、宽高
【角色信息文件】保存所有角色的图片索引、8方向的碰撞矩形RECT
另外人物在地图中的XY坐标以人物图片左上角0,0为基准
2:渲染顺序
·渲染地形—第1层
·渲染人物—第2层
·渲染建物—第3层
·渲染人物的半透明遮挡部分
3:人物的碰撞检测
人物每走一个单位,就判断人物的碰撞矩形RECT所占据的所有菱形地图块,如果人物移动的目标位置周边均无障碍,则可通行,否则不可通行。
4:半透明遮挡检测
人物每行走一个单位,判断人物的碰撞矩形RECT所占据的地图块类型,然后找到该地图块在人物RECT的left的位置上最低障碍的bottom值(即,从人物碰撞矩形RECT的left处开始,向下找该地图块最低的碰撞RECT)如果该位置低于人物碰撞RECT的bottom值,则说明产生了遮挡,然后以半透明方式再次渲染该人物。
欢迎研究2D游戏的朋友来讨论。。。
------解决方案--------------------
不管怎么说,我早就开发过2D游戏。你呢?
------解决方案--------------------
其实我的理解是,他是想说,当图像叠加时,重合部分的状态设一个透明点的状态
------解决方案--------------------
好吧我承认,以你的资源,无法使用我所说的渲染方法。
技术是没有对错的。我现在也可以这么说。
错的是人,以及他所使用的资源。