玩家向上移动,他是跳跃还是攀爬?


11

在其中带有梯子的基于2D物理的平台游戏中,您如何确定玩家向上移动是由跳跃引起还是由他爬梯引起的,从而使您知道要播放哪种动画?

通常,方向向量显然不足以确定要播放的动画:您还如何确定运动原因(因此您知道要使用的正确精灵)?


1
如果玩家在梯子上,他真的在空中吗?
德里克(Derek)

Answers:


15

我经常有一个个人逻辑问题,您似乎在这里表达。有时是您完全从错误的方向看逻辑和编程。在这种情况下,由于逻辑代码,您似乎从一开始就没有意识到这是正在发生的事情。以编程方式来讲,您应该已经知道他是否在阶梯上。

考虑一下(正如我所说,我经常遇到这个问题)。假设您是一个聪明的程序员,那么游戏逻辑应该知道您正在阶梯上。为了得到更好的解释,我有一个文件归档类型,并且每天浪费一个小时来试图弄清楚如何获取数据大小,而我从来没有停止过想过,当我加载文件时,我现在知道它的大小:P。

之所以如此特别地相关,是因为您将其视为“现在我在空中,如何确定我是在梯子上还是在跳跃?” ...什么时候应该认为“我将要公开发言,但是请首先使用哪种方法,以便可以将其用于动画用途。”


简单如:OnJump()你改变jumping布尔为true,然后如果你在空中是和jumping是假的,那么你要么下降或梯子等
约书亚赫奇斯

6

物理系统既不知道也不在乎玩家为何朝特定方向移动。是您的游戏导致物理系统以这种方式移动玩家,因此,您有责任对此进行跟踪。玩家实体应该具有某种状态,可以判断其是否在跳跃,攀爬,奔跑等。您不应该试图根据物理系统发生的事情来弄清楚这一点。


2

似乎在碰撞中触发的设置球员垂直速度的任何事件也可以用来设置一个标志,以指定要使用的动画。

如果您使用的第三方库对其提供的信息过于严格,则可以用矩形包围梯子,并且如果玩家向上移动并包含在该矩形中,则可以进行爬升动画。


这实际上提出了一个好点,我稍后将在我自己的游戏开发中解决这个问题,那就是如何基于物理原理更改动画的速度。我有一些角色,我想按程序摆动手臂,具体取决于他们跌落的速度。而且我从未想过有一个很好的方法来进行深入研究(一直在思考),但是您的速度思想要好得多。+1是一个通用的答案,而不仅是针对他的情况。
约书亚树篱

1

设置跳跃速度时,还将字符状态设置为STATE_JUMPING。这样一来,您就始终知道播放器处于哪种状态,并可以通过检查播放器状态来采取相应的措施。

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.