gpt4 book ai didi

Java 2D 平台游戏 重力

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:57 29 4
gpt4 key购买 nike

我目前正在用 Java 制作 2D 平台游戏。我是初学者,所以放轻松。我对游戏中的重力有疑问。我使用不同的变量来进行坠落和跳跃。我正在使用平铺 map 。那么让我们进入正题吧。我的跌倒方法是这样的 -

if(collisionDown == false) {
characterY += fall;
fall ++;
{

fall 等于 4。如果碰撞Down 为 true,则重置回 4。

我的跳转方法几乎是一样的:

if(key.E == true && collisionDown == true) {
characterY -= jump;
jump --;
}

jump 等于 16。如果 collisonDown 为 true,则重置回 16。

现在的问题是:想象角色正在跳跃。它在空中并且下降时字符Y +=下降;假设在那个时刻,characterY = 250 并且fall 等于- 15。角色下方的下一个实心图 block 从 Y 位置 255 开始。角色位于 250,并且未检测到碰撞,因此下一帧它将向 characterY 添加 15,即 250 + 15 = 265。此时,角色已“进入”位于位置 Y 255 的实心图 block 。

我已经“修复”了这个问题,因此角色回到了实心图 block 的顶部(这是可见的且烦人的。)这不是完美的解决方案,因为它每次进入实心图 block 时都会使角色减慢 1 帧(这是因为它检测到左右碰撞并且角色无法移动)。如果我能这么说的话,这个角色明显结巴了。

我需要解决该问题,但想不出任何解决方案。因此,如果您提出建议,我会很高兴。谢谢。

最佳答案

我可能会使用类似下面的东西。

if(collisionDown == false) {
characterYnext = characterY + fall; //Get Next Position
if(NextMovementCollides()){ //Basically if next position is too far.
characterYnext += difference_between(CharacterY,Ground); //This should move the character to the ground state.
fall = 0; //No longer falling so reset the value.
}
else{characterY += fall; fall++;} //Otherwise continue falling like normal.
}

免责声明:我不是 Java 程序员,所以我的语法可能有点不对劲。

这应该可行,只需将您的游戏逻辑插入到有意义的地方即可。

关于Java 2D 平台游戏 重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965534/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com