Questions tagged «platformer»

一种动作游戏,专注于基于平台的动作。它同样存在于2D和3D游戏世界中。


7
2D Platformer AABB碰撞问题
我的AABB冲突解决方法有问题。 我先解析X轴,然后解析Y轴,以解决AABB相交问题。这样做是为了防止此错误:http : //i.stack.imgur.com/NLg4j.png 当物体移入播放器且必须水平推动播放器时,当前方法可以正常工作。如您在.gif文件中所见,水平尖峰正确地推动了播放器。 但是,当垂直峰值移动到播放器中时,X轴仍将首先解析。这使得“将钉鞋用作升降机”是不可能的。 当玩家进入垂直尖峰(受重力影响而掉入)时,他被推向Y轴,因为开始时X轴上没有重叠。 我尝试过的方法是此链接的第一个答案中描述的方法:2D矩形对象碰撞检测 但是,尖峰和移动的对象是通过更改位置而不是速度来移动的,直到调用Update()方法之前,我才计算它们的下一个预测位置。不用说此解决方案也不起作用。:( 我需要以上述两种情况都可以正常工作的方式解决AABB碰撞。 这是我当前的碰撞源代码:http : //pastebin.com/MiCi3nA1 如果有人可以研究这个问题,我将非常感激,因为这个错误从一开始就一直存在于引擎中,并且我一直在努力寻找一个好的解决方案,但没有成功。这严重使我整夜都在看碰撞代码,并阻止我进入“有趣的部分”并对游戏逻辑进行编码:( 我尝试实现与XNA AppHub平台演示中相同的碰撞系统(通过复制粘贴大部分内容)。但是,“跳跃”错误发生在我的游戏中,而AppHub演示中没有发生。[跳虫:http : //i.stack.imgur.com/NLg4j.png ] 要跳,我检查播放器是否为“ onGround”,然后将-5添加到Velocity.Y。 由于玩家的Velocity.X高于Velocity.Y(请参见图中的第四个面板),因此onGround在不应该设置为true时设置为true,从而使玩家跳入半空中。 我相信这在AppHub演示中不会发生,因为播放器的Velocity.X永远不会高于Velocity.Y,但我可能会误会。 我先在X轴上解析,然后在Y轴上解析,从而解决了这个问题。但是,如上所述,这加剧了与尖峰的碰撞。

6
一种存储潜在无限2D地图数据的方法?
我有一个2D平台程序,当前可以处理100 x 100的块,块坐标存储为long,因此这是地图的唯一限制(maxlong * maxlong)。所有实体位置等都与块相关,因此没有限制。 我遇到的问题是如何在没有成千上万个文件的情况下存储和访问这些块。有什么想法可以实现快速低成本的高清存档格式,而无需一次打开所有内容?
29 xna  2d  c#  maps  platformer 

2
洛克人风格的屏幕滚动设计
NES经典的《漫画人》系列使用了非常特殊的滚动技术,我很难将精力集中在实现上。本质上,该级别分为大小均相同的“屏幕”。一些屏幕可以平滑地彼此滚动,从而产生了更广阔的游戏领域的幻觉。某些屏幕会阻止相机滚动,直到播放器到达屏幕边缘为止,此时会发生过渡并显示下一个屏幕。单个屏幕也可能具有多个过渡,例如,它的梯子可以上升到一个屏幕,但是您也可以向前走到另一个屏幕。 这些屏幕过渡如何建模? 屏幕0是播放器开始的开始屏幕。 屏幕0-3在水平方向上平滑滚动,并向玩家显示为一个连续的比赛场地。 由于在屏幕3及其相邻的屏幕4和5之间存在过渡,因此除非玩家移动到相应的边缘并“推动”到下一个屏幕,否则照相机不会前进到屏幕3的右边缘或上边缘。 一旦播放器移动到两个过渡边缘中的任意一个,用户输入就会立即被禁用,并且摄像机会过渡到新区域,之后恢复用户输入。 蓝屏(屏幕5)已禁用水平滚动,因此只能进行垂直过渡。 绿色屏幕(屏幕6)具有垂直返回屏幕5的垂直过渡,但也允许水平平滑滚动到屏幕7。 编辑:在房间方面实现过渡导致我这样做: 带有箭头的小缺口是可能发生过渡的区域。每个区域都有一个“方向”和谎言只是房间外面的可视区域。一旦玩家击中一个区域,就会开始过渡。
25 2d  camera  platformer 

6
有哪些设计有趣,具有挑战性的Mario风格平台游戏关卡的技术?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 8个月前关闭。 我拥有制作Mario型游戏所需的一切。我只是不知道如何设计关卡以使其具有挑战性或乐趣。有小费吗? 杀死敌人的唯一方法是跳上敌人,所以我认为要成为一个老板很难。我只是想把最后一个级别加长。这是一个坏主意吗?

13
如何使探索游戏中的治疗变得有趣
我正在创建一个专注于探索的游戏,尽管我在康复方面有些失落。 问题是我不喜欢敌人随机降低生命值的想法,因为这通常会导致生命值低下且不在任何治疗站附近(Metroid,Axiom Verge)的磨牙,而且我不想复制灵魂/ Hollow Knight的/ Focus系统(战斗系统已经被我窃取了:3),但是Hollow Knight是我玩过的唯一一款专注于探索的游戏,使治疗变得有趣。 我也想到过自动再生,但是,这很容易导致玩家在boss战斗中治愈时变得胆怯,这会中断游戏流程。 我还考虑过击打敌人可以恢复1/8的生命值,但是这会使玩家在获得1/8的增益后感觉不到紧张,这会使他们在再次被击中时不会丧命,并且使游戏感觉像是全攻防。 我也曾尝试过一种物品治疗方法,玩家必须吃点东西或喝点东西才能治愈,但这并不能真正鼓励治疗,因为一旦物品用完,就无法治愈,直到获得更多(Legend塞尔达传说)。 我也几乎没有任何治疗的余地,但是我注意到,在探索时,如果您在困难的老板面前做出了哑巴的打击,或者在老板变得辛苦之前做出了哑巴的打击(咳嗽,库珀头咳嗽),玩家要么自杀或跑回康复站。 我该怎么做才能使治疗变得有趣,并且不中断游戏流程? 这是2D平台游戏,跳跃在战斗中非常重要。

7
如何检测2D平台游戏中被压扁的玩家?
我正在检查碰撞中是否有平台角色,如#1所示。红点是被检查的像素,灰线指示它们所属的轴。我喜欢以这种方式检查碰撞(相对于边界框)得到的结果。除了一个问题:挤压检测,其他所有功能都按我的意愿运行。 在以下图像中,浅蓝色框表示地面,橙色框表示对象,箭头表示移动方向。 检测玩家何时被压倒的简单解决方案是查看相对两侧的碰撞点是否都在触发。如果是这样,则说明玩家被压碎了。在#2中,您可以看到正常的暗恋场景。播放器已接地,顶部碰撞点与下落的物体相交。这触发了暗恋。 #3、4和5存在有问题的场景。在#3中,玩家正在朝向上移动的物体移动。右侧碰撞点撞击物体,导致碰撞并使玩家停止。 现在,如果对象继续向上移动并且玩家继续向右移动(如#4所示),则该对象清除玩家右侧碰撞点,然后玩家向右移动。但是现在,这样做的目的是使对象与顶部碰撞点相交,从而导致不必要的垂直挤压。 #5中显示了类似的情况。两个物体相距足够远,可以清除底部碰撞点,从而允许玩家跌倒,但不能超过允许侧面碰撞点清除的程度,从而导致不必要的水平挤压。 我一直在努力寻找解决方案,但是我提出的任何方案都没有特别有效,所以我想知道是否有人对解决这些问题有想法或见识。 为了消除一些混淆,红色碰撞点将位于精灵内,而灰线仅用于表示每个碰撞点的相关轴。例如,如果角色的精灵是一个简单的绿色方块,则拐点将如下所示:

1
故意造成不精确的复古/ NES风格物理学
背景: 我在为我的复古Platformer重制项目获得正确的跳跃曲线时遇到问题。原始游戏适用于NES,玩家的速度存储在两个独立的部分中:一个字节代表整数,另一个字节代表小数部分。 重力以0.25 /帧的速率添加到播放器的Y速度。 玩家跳跃时,其Y速度设置为-4.64453125。其余的跃迁曲线留给重力。 随着玩家的上升,他的垂直速度以0.25 /帧的速率收敛到0。但是,当玩家的速度达到小于零的值时,速度会按照不同的模式变化。它遵循以下模式,而不是每帧稳定减少0.25: [1.75, -0.25, -0.25, -0.25, 1.75, -0.25, -0.25, -0.25, 1.75, ...] 它似乎与整数溢出有关。 数据: 这是原始数据的转储。这是速度表。 Jump Curve Y-Hi Y-Lo Decimal Change/Frame 4 165 4.64453125 ? 4 101 4.39453125 -0.25 4 37 4.14453125 -0.25 3 229 3.89453125 -0.25 3 165 3.64453125 -0.25 3 101 3.39453125 -0.25 …



2
2D Platformer的墙跳
我一直在寻找一种在xna游戏中实现跳墙的方法,但是我找不到有关它的任何信息,有人可以请我帮忙吗?
14 xna  2d  c#  platformer 

4
我如何优雅地教玩家如何玩?
我一直在思考益智平台游戏如何教玩家如何玩。 我喜欢Super Meat Boy,尤其是它教您的方式而没有注意到您正在被教。这让我兴奋和投入。即使是关卡设计简单明了地设计出自己的东西也很满足。 除了教授每种新技能或新规则的“教程级”之外,还有其他方法吗?每种产品的收益和成本是什么?

3
2D游戏碰撞响应:SAT和沿给定轴的最小位移?
我正在尝试在自己制作的2D游戏中实现碰撞系统。分离轴定理(如metanet的碰撞教程所述)似乎是处理碰撞检测的一种有效且健壮的方法,但我不太喜欢它们使用的碰撞响应方法。通过沿最小重叠轴盲目移动,该算法仅忽略了运动对象的先前位置,这意味着它在进入静止物体并随后反弹时不会与静止物体发生太多碰撞。 这是一个很重要的情况的示例: 根据上述SAT方法,该矩形将简单地从垂直于其斜边的三角形中弹出: 但是,实际上,矩形应该停在三角形的右下角,因为如果矩形沿着其位移矢量连续移动,那将是第一个碰撞点: 现在,这在游戏过程中可能实际上并不重要,但是我很想知道是否存在一种以这种方式有效且普遍地获得准确位移的方法。在过去的几天里,我一直在为之绞尽脑汁,我还不想放弃! (从StackOverflow交叉发布,希望这不违反规则!)

3
制作实时多人平台游戏涉及什么?
我正在创建一个具有“合作”功能的平台游戏,我想通过网络/互联网来工作。 现在,我已经阅读了有关网络游戏编程的文章,其中包括诸如每个程序员都需要了解的有关游戏网络的文章,因此我了解了Peer-to-Peer锁步和服务器-客户端预测架构等技术之间的区别: 我得出的结论是,对于将要在互联网上玩的任何实时游戏,“对等”锁步根本不是一种选择。 我还担心即使对于平台游戏者,由于服务器往返的作用和反应之间的延迟,简单的客户端-服务器体系结构(没有某种客户端预测)也会导致游戏性能下降。(话虽如此,我想消除对中央服务器的需求,所以只有其中一个参与者,即客户端,实际上会遇到这种延迟)。 这让客户可以预测,但是即使对于像平台游戏这样的简单游戏,这听起来仍然很复杂。 我将如何为多人平台游戏创建有效的客户预测系统?

3
冲动跳跃
有一件事情一直困扰着我,那就是如何在平台游戏机中实现“人造脉冲”跳跃。如果您不知道我在说什么,请考虑一下《马里奥》,《柯比》和《洞穴物语》中的《名言》。他们有什么共同点?好吧,跳跃的高度取决于按住跳跃按钮的时间。 知道这些角色的“冲动”并不是像实际物理学中那样在跳动之前就已经建立的,而是在空中时建立的,也就是说,您可以很好地将手指抬起至最大高度的中途,即使在它和句号之间的减速;这就是为什么您可以轻松地跳一跳并保持跳远的原因-我对它们如何保持轨迹成弧形着迷。 我当前的实现方式如下: 按下跳转按钮时,重力将关闭,并且化身的Y坐标系将因重力的恒定值而减小。例如,如果事物跌落到每刻度Z个单位,它将增加每勾Z个Z单位。 释放按钮或达到限制后,虚拟化身会减速,使其覆盖X个单位,直到其速度达到0;一旦完成,它就会加速直到其速度与重力匹配-坚持这个例子,我可以说它从0加速到Z单位/刻度,同时仍然覆盖X单位。 但是,此实现会使跳跃变得过于对角,并且除非化身的速度快于重力,否则这将使其在我当前的项目中变得太快(它在大约每跳动4像素处移动,而重力在每跳动10像素处移动) 40FPS的帧率),它也使它比水平更垂直。那些熟悉平台游戏的人会注意到,角色的弧形跳跃几乎总是使他们能够跳得更远,即使它们的速度不如游戏的重力那么快;如果游戏不正确,即使玩法不正确,也会证明自己是正确的。非常违反直觉的。我知道这一点是因为我可以证明我的实现非常烦人。 有没有人尝试过类似的机制,甚至可能成功了?我想知道这种平台游戏跳跃的背后是什么。如果您以前没有任何经验,并且想尝试一下,那么请不要尝试纠正或增强我所解释的实现,除非我采取了正确的方法-尝试从以下方面弥补您的解决方案刮。我不在乎您是否使用重力,物理学或其他方法,只要它能显示出这些伪脉冲的工作原理即可。 另外,我希望它的显示避免特定语言的编码。例如,为我们分享一个C ++示例或Delphi ...就像我在我的项目中使用XNA框架一样,并且不介意C#的东西,我没有太多的耐心来阅读别人的代码,某些使用其他语言的游戏开发人员可能会对我们在此处获得的成就感兴趣,因此不要介意使用伪代码。 预先谢谢你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.