java中跳跃执行,java - 2D游戏中的跳跃数学 - 堆栈内存溢出

这篇博客讨论了在J2ME平台上进行2D游戏开发时遇到的帧率同步问题。作者分享了一个gameloop的实现,其中角色的跳跃行为受到设备性能的影响,导致在慢速设备上角色跳跃过快。checkGravity()函数负责角色的上升和下落逻辑,但未考虑帧率差异。作者寻求解决方案,希望角色的跳跃速度能根据游戏速度成比例地降低。
摘要由CSDN通过智能技术生成

我在J2ME工作,我的gameloop执行以下操作:

public void run() {

Graphics g = this.getGraphics();

while (running) {

long diff = System.currentTimeMillis() - lastLoop;

lastLoop = System.currentTimeMillis();

input();

this.level.doLogic();

render(g, diff);

try {

Thread.sleep(10);

} catch (InterruptedException e) {

stop(e);

}

}

}

所以它只是一个基本的doLogic() , doLogic()函数调用场景中角色的所有逻辑函数, render(g, diff)调用场景中每个角色的animateChar函数,接下来, animChar中的animChar函数class设置屏幕中的所有内容,如下所示:

protected void animChar(long diff) {

this.checkGravity();

this.move((int) ((diff * this.dx) / 1000), (int) ((diff * this.dy) / 1000));

if (this.acumFrame > this.framerate) {

this.nextFrame();

this.acumFrame = 0;

} else {

this.acumFrame += diff;

}

}

这确保了我必须根据机器从一个循环到另一个循环所花费的时间来移动所有东西(记住它是电话,而不是游戏装备)。 我确信这不是实现这种行为的最有效方式,所以我完全乐于在评论中批评我的编程技巧,但在这里我的问题是:当我让我的角色跳跃时,我所做的就是我把他的dy为负值,比如200,我将布尔跳转设置为true,这使得角色上升,然后我有一个名为checkGravity()函数,确保上升的所有内容都必须关闭, checkGravity也检查因为角色在平台上,所以为了你的时间我会把它剥掉一点:

public void checkGravity() {

if (this.jumping) {

this.jumpSpeed += 10;

if (this.jumpSpeed > 0) {

this.jumping = false;

this.falling = true;

}

this.dy = this.jumpSpeed;

}

if (this.falling) {

this.jumpSpeed += 10;

if (this.jumpSpeed > 200) this.jumpSpeed = 200;

this.dy = this.jumpSpeed;

if (this.collidesWithPlatform()) {

this.falling = false;

this.standing = true;

this.jumping = false;

this.jumpSpeed = 0;

this.dy = this.jumpSpeed;

}

}

}

所以,问题是,这个函数无论diff如何都会更新dy ,使得角色在慢速机器中像超人一样飞行,我不知道如何实现diff因子,这样当一个角色跳跃时,他的速度就会降低与游戏速度成比例的方式。 任何人都可以帮我解决这个问题吗? 或者指出如何以正确的方式在J2ME中进行2D跳转 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值