你好,从昨天你发问的时候,我就关注了这个问题,但是出于一些因素没有回答,以下我说说我的想法。
你在所有游戏对象的基类中增加一个Z的属性,Z代表对象的高度,同时增加一个J的属性,J代表跳跃的高度,除此之外,还需要创建XY的属性,这个是存储你人物坐标的参数。
为什么需要以上这些数据?因为你在2D游戏中要使用第三个方向的参数,但实际上这第三个方向也要使用屏幕坐标的XY来表现,那么你用UNITY中的XY坐标来决定你角色的位置,就很不靠谱。
那么接下来,你人物在移动的时候,移动的是虚拟的XY坐标参数,跳跃的时候,改变的是J的参数,同时,在每一帧的情况下(考虑性能的话也可以在角色进行移动的情况下)进行显示位置的计算,X如果没有其他要求不变,而显示的Y轴则用虚拟的Y参数和J参数来进行计算,并在虚拟的XY轴处生成影子。
因为其他物体也存在Z这个高度,那么是否跳的上去,就使用J和Z的对比来进行,同时,也可以根据物体的虚拟XY来决定,这个物体是否阻挡了你的角色前进,如果他是很高,但是其实只是一个圆柱,按理说你是可以从它后面走过去的(前后就是渲染层级的问题了),如果你直接用一个触发器,那么就会算你碰到了阻碍,但是如果你用了虚拟XY坐标,那么能不能通过,是由自身的XY及Z(甚至再加上物体的长宽)来计算的话,那就可以达到,同时也可以用于计算角色和敌人是否在同个轴上
不要过于依赖UNITY的触发器,效率不高,我第一次在奶牛回答问题,可能会有所遗漏,有问题可以询问我
如何在自上而下的横版街机类型游戏中,实现伪3D效果?
0 条评论