不要局限于2d
你做个3d的游戏用2d的素材不就完事了
1
1
Kingfeng ,我们作为一个协会誓要治愈这个世界及其居民
我有点没理解【可以高低差的跳跃】,我就先按照我当前的感觉来回答了
一般来说如果需要在xy平面体系下做出xyz三个坐标的话需要一个转换机制
f(u,v) = (x,y,z),所以我姑且认为你的意思是,如何在同一个xy坐标下判断两个z坐标的高低
这就会有一个转折点,如果你游戏本身有Z坐标属性,你只需要用它运算就行。
对于游戏,会直接使用x,y,z坐标来描述自己在游戏中的位置,这就像游戏的大脑(数据)是3D的,但是最后用2D画在屏幕上
然后游戏绘画的时候,建立一个转换的方式,吧对应的游戏内真实坐标转换成绘图使用的2D坐标,包括图层
如果你本身就是用两个坐标x,y来做的
我个人的意见是加一个钩子,可以获取玩家键盘输入、
这就很像是快递柜,输入一个密码打开某个门,输入另一个密码打开另一扇门
吧这个钩子放在需要检测的场景中,用这个钩子勾住玩家的跳跃输入,或者跳跃高度,然后其他对象就可以用这个数据来判断玩家跳到了什么位置。,需要高度信息的物体通过访问这个数据来判断玩家的高度信息,再和自己设定的高度信息进行比对。
或者原理类似,直接让玩家跳跃动作产生时,回报一个高度给游戏,这个高度会符合玩家跳跃→自由落体的曲线。并且每帧更新
然后需要玩家高度的情况下就调取这个数字。
不过如果你的游戏在开发早期,而且需要使用极大量的高度对比,我还是直接建议你用xyz记录,在绘画的时候变换一下就行了
0
菠萝面包 ,我要做一辈子游戏
同关注这个问题,我也充满了好奇心。
印象中有一款叫《CrossCode》(远星物语)的H5游戏。
这个游戏跳平台是核心玩法之一。
不仅如此,它也有高度概念,大概分3个等级的高度。
不知道是否有人来分析一下。
5
Lansi ,游戏爱好者
你好,从昨天你发问的时候,我就关注了这个问题,但是出于一些因素没有回答,以下我说说我的想法。
你在所有游戏对象的基类中增加一个Z的属性,Z代表对象的高度,同时增加一个J的属性,J代表跳跃的高度,除此之外,还需要创建XY的属性,这个是存储你人物坐标的参数。
为什么需要以上这些数据?因为你在2D游戏中要使用第三个方向的参数,但实际上这第三个方向也要使用屏幕坐标的XY来表现,那么你用UNITY中的XY坐标来决定你角色的位置,就很不靠谱。
那么接下来,你人物在移动的时候,移动的是虚拟的XY坐标参数,跳跃的时候,改变的是J的参数,同时,在每一帧的情况下(考虑性能的话也可以在角色进行移动的情况下)进行显示位置的计算,X如果没有其他要求不变,而显示的Y轴则用虚拟的Y参数和J参数来进行计算,并在虚拟的XY轴处生成影子。
因为其他物体也存在Z这个高度,那么是否跳的上去,就使用J和Z的对比来进行,同时,也可以根据物体的虚拟XY来决定,这个物体是否阻挡了你的角色前进,如果他是很高,但是其实只是一个圆柱,按理说你是可以从它后面走过去的(前后就是渲染层级的问题了),如果你直接用一个触发器,那么就会算你碰到了阻碍,但是如果你用了虚拟XY坐标,那么能不能通过,是由自身的XY及Z(甚至再加上物体的长宽)来计算的话,那就可以达到,同时也可以用于计算角色和敌人是否在同个轴上
不要过于依赖UNITY的触发器,效率不高,我第一次在奶牛回答问题,可能会有所遗漏,有问题可以询问我
0
柔王丸 ,力拔山兮气盖世,时不利兮游不驰
建议不要在“带状卷轴”游戏中 玩跳平台, 空中连击倒是没问题。
因为2D的带状卷轴游戏, 用画面的Y轴 来表达现实逻辑上的Z轴,而跳跃则是以参数来实现,这样人眼实际上是分不清跳得有多高的。 而跳平台玩法,玩的就是一个精准对落点的预判,如果这点做不到,跳平台是可以跳,但是玩法被限制住了,不好玩。所以 带状卷轴的清版,从80年代末到90年代中后期作品无数,也只有 早年摸索阶段的的 双截龙之类试探性的少玩了几把。 后来都不弄了。
而且高平台还会挡 后面的东西。
3
DragoonKiller ,点赞同是因为有阅读价值 不是真的赞同 (
你实际上需要的应该是: 真·3D场景 + 2D渲染. 你自己做出的"伪Z轴"实际上仍然需要实现"真实Z轴"的所有计算.
渲染怎么做呢? 首先把摄像机的透视关掉. 然后, 对每个物体设置"遮罩区域", 通过判断角色处于区域的内部还是外部, 决定某个图片是否遮挡角色图片.
一般横版格斗射击游戏中障碍物的遮罩区域很简单, 就是按物体的y轴分为前后两个部分, 角色如果处于后面的部分则被障碍物遮挡. 你给的参考图片要复杂一些, 右边那个平台的遮罩区域大概是这样的(摄像机在左上, 往右下观察):
角色处于橙色线所示的部分就会被平台的图片遮住, 否则不会被遮住.
其它的所有逻辑, 比如在平台上边下边作y轴方向的行走, 还有跳跃等, 和普通的3D一样处理. 不过相对于全方向的3D来说, 你只需要处理立方体碰撞盒或由若干立方体组合而成的碰撞盒, 角色也只能沿着若干个定轴进行移动, 这方面相对于3D游戏会变简单.
补充:
有些引擎没有z轴的话... 如何在不使用内置Z轴的情况下实现一个"伪Z轴"?
首先, 我们把引擎提供的 (x, y) 坐标叫做平面坐标, 你需要额外存储物体的 z 坐标. 然后, 对于各种可以跳上跳下的"平台", 它至少是一个平面: ([x1, x2], [y1, y2], z'). 之后各种交互的判定如下:
呃, 实际上就是自己实现一个简陋的3D引擎及碰撞检测. 不是万不得已不要这么做.
0
神灯游戏 ,匠心
需要给 世界定义一个高度概念 也就是 世界Z轴的概念
之后 实体本身 对于世界 都有个定位
这样 就可以根据判断实体的Z 实现各种 跳跃 悬浮 等涉及到高度的设计了
同时 实体 对于 地面概念也能计算出一个值 从而实现影子 概念
这样 看上去就很真实了
实体Z加 实体影子 所在地图的 Y 也就是 当前悬浮实体绘制位置
大概这个情况。。。因为开发游戏中 简单解答一下 希谅解
{{question['follower_count']}} 个玩家关注
相关元素
相关问题
横版卷轴游戏的主角行走动作一般有多少帧?5人关注 2个回答
游戏中的等轴镜头有什么优劣?14人关注 4个回答
开发日志应该怎么写?写什么?13人关注 6个回答
问题被以下收藏夹收录
如何在自上而下的横版街机类型游戏中,实现伪3D效果?
0 条评论