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

如何通过设定速度平滑移动Wizard实体至目标X坐标(替代直接赋值)

实现步进式坐标对齐功能

核心思路

先根据原逻辑计算出需要对齐到的20倍数目标坐标,然后通过每帧移动固定步长(speed=2)的方式,逐步将Wizard移动到目标位置,避免直接修改坐标的突兀感。

代码实现

首先在类中添加必要的成员变量,用于跟踪目标坐标和移动状态:

// 目标对齐坐标
private int targetX;
private int targetY;
// 移动步长
private final int speed = 2;
// 标记是否正在执行对齐移动
private boolean isAligning = false;

然后编写计算目标坐标的方法,保留原逻辑中根据朝向决定对齐方向的规则:

// 计算X轴目标对齐坐标
private int getTargetX() {
    int remainder = wizard.x % 20;
    if (remainder == 0) return wizard.x;
    
    if ("left".equals(facing)) {
        return wizard.x - remainder;
    } else if ("right".equals(facing)) {
        return wizard.x + (20 - remainder);
    }
    return wizard.x; // 方向无效时保持原坐标
}

// 计算Y轴目标对齐坐标
private int getTargetY() {
    int remainder = wizard.y % 20;
    if (remainder == 0) return wizard.y;
    
    if ("up".equals(facing)) {
        return wizard.y - remainder;
    } else if ("down".equals(facing)) {
        return wizard.y + (20 - remainder);
    }
    return wizard.y; // 方向无效时保持原坐标
}

接下来编写启动对齐的方法,触发移动流程:

// 启动坐标对齐移动
public void startAlignment() {
    targetX = getTargetX();
    targetY = getTargetY();
    isAligning = true;
}

最后在游戏的帧更新逻辑中添加移动处理(需确保这个方法每帧都会被调用):

// 每帧更新移动状态
public void updateAlignmentMovement() {
    if (!isAligning) return;

    // X轴步进移动
    if (wizard.x < targetX) {
        wizard.x += speed;
        // 防止过度移动,直接修正到目标
        if (wizard.x > targetX) wizard.x = targetX;
    } else if (wizard.x > targetX) {
        wizard.x -= speed;
        if (wizard.x < targetX) wizard.x = targetX;
    }

    // Y轴步进移动
    if (wizard.y < targetY) {
        wizard.y += speed;
        if (wizard.y > targetY) wizard.y = targetY;
    } else if (wizard.y > targetY) {
        wizard.y -= speed;
        if (wizard.y < targetY) wizard.y = targetY;
    }

    // 到达目标后停止移动
    if (wizard.x == targetX && wizard.y == targetY) {
        isAligning = false;
    }
}

使用方式

将你原来直接修改坐标的代码块替换为调用startAlignment(),然后确保updateAlignmentMovement()在游戏的主循环中被每帧执行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:42:14