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

GameMaker中路径移动物体的真实速度计算(xprevious/yprevious失效)

路径移动物体的真实速度计算方案

核心问题原因

GameMaker的路径移动是直接修改物体x/y坐标的内置行为,不会同步更新speed/direction,也不会维护xprevious/yprevious的帧间差值,所以这些内置变量无法反映路径移动的真实状态。

方法一:手动维护帧间位置计算速度

这是最通用的方案,适配所有路径播放模式(匀速/变速、循环/单次):

  • 在物体Create事件初始化自定义位置变量:
    last_x = x;
    last_y = y;
    
  • 在物体Step事件计算速度与方向:
    // 计算当前帧与上一帧的位置差
    var dx = x - last_x;
    var dy = y - last_y;
    // 用勾股定理计算实际速度(单位:像素/步)
    var actual_speed = sqrt(dx*dx + dy*dy);
    // 可选:计算真实移动方向
    var actual_direction = point_direction(last_x, last_y, x, y);
    
    // 更新上一帧位置,用于下一次计算
    last_x = x;
    last_y = y;
    

方法二:通过路径属性计算匀速速度

如果路径是匀速播放的,可以直接用路径内置参数推导:

// path_speed为路径播放速度(步/秒,与帧率相关)
// path_get_length(path)获取路径总像素长度
// path_get_number(path)获取路径总步数
var actual_speed = path_speed * (path_get_length(path) / path_get_number(path));

注:此方法仅适用于匀速播放场景,若路径播放速度动态变化,优先用第一种方法。

内容的提问来源于stack exchange,提问作者Selim Kaltakkıran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:48:05