【发布时间】:2014-04-18 16:52:08
【问题描述】:
我正在制作一个简单的游戏,比如马里奥,角色固定在一个位置,地面向左移动,给人一种角色移动的错觉。地面由左上角和右下角坐标定义的矩形块组成:
private int surfaceMatrix[][] = {
{0, 100, 300, 0} // block having 100 height and 300 width
};
跳跃只是在向左移动表面的同时改变角色的y坐标,所以跳跃看起来像反转V字母。
其余代码——动画、移动精灵——与http://zetcode.com/tutorials/javagamestutorial/movingsprites/非常相似
我想让跳跃更真实,所以我的问题是 - 我如何在这里实现重力?我必须使用地面的 dx 和角色的 dy 才能做到这一点,可以吗?
这里的速度是多少?每秒像素数...?
怎么做?
【问题讨论】:
-
现在角色跳跃时的高度如何计算?它是基于像素的吗?如果是这样,您如何支持不同的分辨率?我假设您计算与地面的相对位置,然后根据实际分辨率进行最终计算。如果是这样的话,随着时间的推移,重力只是一个比 height-1 稍微复杂的下降函数。
-
嗯,现在分辨率是固定的,角色的高度也是固定的。
-
如果您不计算像素本身但使用相对高度,则允许更改分辨率是微不足道的。但是如果你使用固定的分辨率,你知道他跳多高(比如 50 像素),我假设你在他跌倒时多次画他,目前使用固定间隔(比如 5px,取决于你的刷新率)所以使用默认是一种稍微复杂的方法来计算实际下降而不是固定的 5px,比如“5px+(iteration*5px)。这当然太简单了,但你明白了。