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

LibGDX中实现Actor跨不同屏幕尺寸同步移至右侧消失的方法

解决不同屏幕尺寸下Actor移动同步的问题

核心问题根源

你现在遇到的情况,本质是移动逻辑依赖了绝对像素值(比如固定移动多少像素、固定每秒移动多少像素)。在不同宽度的屏幕上,相同的绝对像素对应的屏幕占比完全不同——比如720宽的屏幕上移动720像素是整个屏幕宽度,1080宽的屏幕上移动720像素才到屏幕的2/3位置,自然宽屏上Actor停留时间更长。

具体解决方案

下面是几种可靠的实现方式,你可以根据自己使用的引擎/框架调整:

1. 基于屏幕比例定义移动速度

把移动速度和屏幕宽度绑定,比如定义为「每秒移动1倍屏幕宽度」,这样不管屏幕多宽,Actor从左侧外移动到右侧外的时间完全一致。

举个通用伪代码(可转换成Unity/Unreal/Godot等引擎语法):

// 获取当前屏幕的有效宽度(注意区分世界坐标/UI坐标,根据场景选择对应API)
float screenWidth = 获取屏幕宽度的引擎API;
// Actor自身宽度,避免一半还在屏幕内就消失
float actorWidth = Actor的宽度属性;
// 速度:每秒移动1倍屏幕宽度(可按需调整比例,比如0.5就是2秒移完)
float moveSpeed = screenWidth;

// 每一帧更新位置
每一帧时 {
    Actor的x坐标 += moveSpeed * 帧时间间隔;
    // 当Actor完全移出右侧屏幕时销毁/隐藏
    if (Actor的x坐标 > screenWidth + actorWidth/2) {
        隐藏或销毁Actor;
    }
}

2. 固定移动总时长,动态计算速度

如果你想精确控制整个移动过程的时长(比如不管屏幕多大,都在2秒内完成移动并消失),可以先算出总移动距离,再除以时长得到速度:

// 固定总时长,比如2秒
float totalDuration = 2.0f;
// 总移动距离:从左侧外到右侧外 = 屏幕宽度 + Actor自身宽度
float totalDistance = screenWidth + actorWidth;
// 计算每秒需要移动的距离
float moveSpeed = totalDistance / totalDuration;

// 后续移动逻辑和上面一致

3. 同步Actor自身尺寸的适配

别忘了Actor的大小也应该做相对适配,比如设置Actor宽度为屏幕宽度的1/10,这样在所有屏幕上Actor的相对大小一致,视觉上的移动同步感会更强。

总结

核心就是抛弃绝对像素,改用相对屏幕比例或者固定时长来定义移动参数,这样所有设备上的移动节奏就完全同步了,不会再出现宽屏上停留更久的问题。

内容的提问来源于stack exchange,提问作者Nyein Chan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:19:20