You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibGDX中Screen的render方法修改Vector2值异常求助

LibGDX Screen中Vector2值异常的排查与修复

问题核心原因

你的代码问题出在按键触发逻辑的时机和变量重复重置上:

1. *=操作符导致数值来回切换

Gdx.input.isKeyPressed()会在按键按住的每帧都返回true,所以每帧都会执行一次acc.x*=-1f和vel.x*=-1f。第一帧数值变负,第二帧又被取反变回正,第三帧再次变负,以此循环,看起来像是数值被重置。

2. =操作符导致速度无法持续加速

你在按键按住的每帧都执行vel.x=-10f,相当于每帧都把速度强行拉回-10,后续的vel.x+=acc.x*delta只能在当前帧给速度加微小增量,下一帧又被重置,自然无法实现持续加速。

修复方案

方案1:单次按键触发方向切换

如果需求是按下LEFT键一次就改变运动方向,改用Gdx.input.isKeyJustPressed()(仅在按键按下的第一帧返回true):

override fun render(delta: Float) {
    // 渲染代码保持不变
    ScreenUtils.clear(0.168627f, 0.356863f, 0.1334f, 1.0f)
    camera.update()
    pen.projectionMatrix = camera.combined
    pen.begin(ShapeRenderer.ShapeType.Filled)
    pen.color = Color(1.0f, 0.125f, 0.125f, 1.0f)
    pen.circle(pos.x,pos.y, 25f, 32)
    pen.end()

    // 仅在按键按下瞬间翻转方向
    if(Gdx.input.isKeyJustPressed(Input.Keys.LEFT)){
        acc.x *= -1f
        vel.x *= -1f
    }

    // 每帧都执行运动更新,让加速度持续作用
    vel.x += acc.x * delta
    pos.x += vel.x * delta
    println("Acc X: ${acc.x}")
    println("Vel X: ${vel.x}")
    println("Pos X: ${pos.x}")
}

方案2:按住按键时持续加速

如果需求是按住LEFT键时持续向左加速,只在按住时设置加速度,不重置速度,且把运动更新放在按键判断外:

override fun render(delta: Float) {
    // 渲染代码保持不变
    ScreenUtils.clear(0.168627f, 0.356863f, 0.1334f, 1.0f)
    camera.update()
    pen.projectionMatrix = camera.combined
    pen.begin(ShapeRenderer.ShapeType.Filled)
    pen.color = Color(1.0f, 0.125f, 0.125f, 1.0f)
    pen.circle(pos.x,pos.y, 25f, 32)
    pen.end()

    // 按住LEFT时设置向左加速度,松开可恢复默认(可选)
    if(Gdx.input.isKeyPressed(Input.Keys.LEFT)){
        acc.x = -5f
        acc.y = -5f
    } else {
        // 可选:松开按键时重置加速度
        acc.x = 5f
        acc.y = 5f
    }

    // 每帧更新速度和位置,实现持续加速
    vel.x += acc.x * delta
    pos.x += vel.x * delta
    println("Acc X: ${acc.x}")
    println("Vel X: ${vel.x}")
    println("Pos X: ${pos.x}")
}

关键注意点

  • render()方法每帧执行一次,任何放在持续按键判断里的赋值操作都会被重复执行,这是问题的核心。
  • 运动学公式(速度、位置更新)必须放在每帧都执行的逻辑中,才能让加速度持续改变速度,实现平滑的加速效果。

内容的提问来源于stack exchange,提问作者Smelly Fish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:42:46