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

基于运动角度与速度求解网格上游戏抛射体的正交方向平移量

网格运动抛射体正交方向平移量计算方法

要基于运动角度和每秒移动速度(速率)计算正交方向的平移量,核心是利用三角函数分解速度向量,以下是具体方法:

基础公式(标准坐标系)

假设你的游戏使用标准笛卡尔坐标系:

  • x轴正方向为右,y轴正方向为上
  • 角度以x轴正方向为0°,逆时针旋转角度递增

那么两个正交方向的每秒平移量计算公式为:

  • 水平方向(x轴)平移量:vx = speed * cos(angle_radians)
  • 垂直方向(y轴)平移量:vy = speed * sin(angle_radians)

其中:

  • speed:抛射体的每秒移动距离(速度大小)
  • angle_radians:运动角度的弧度值(多数编程语言/引擎的三角函数默认使用弧度)

关键注意事项

  1. 角度单位转换
    如果你得到的角度是度数,需要先转换成弧度,转换公式:
    angle_radians = angle_degrees * π / 180
    比如30°转换成弧度就是 30 * 3.14159 / 180 ≈ 0.5236

  2. 游戏坐标系适配
    很多2D游戏会使用特殊坐标系:

    • 若0°为y轴正方向(向上),则公式需调整为:
      vx = speed * sin(angle_radians)
      vy = speed * cos(angle_radians)
    • 若y轴正方向为向下(比如部分像素游戏),则垂直分量需取负:
      vy = -speed * sin(angle_radians)(标准坐标系下)
  3. 网格离散化处理
    因为是网格运动,计算出的vx/vy是连续的每秒位移,你可以每帧(或固定时间步长)累积位移:

    • 每帧位移增量:delta_x = vx * delta_time,delta_y = vy * delta_time
    • 将增量加到累积位移accum_x/accum_y中
    • 当accum_x的绝对值≥1个网格单位时,移动对应格数,并从accum_x中减去对应值(同理处理accum_y)

示例计算

假设抛射体速度为10单位/秒,运动角度为30°(标准坐标系):

  1. 转弧度:30 * π/180 ≈ 0.5236
  2. 计算分量:
    • vx = 10 * cos(0.5236) ≈ 8.66 单位/秒(水平每秒移动约8.66个单位)
    • vy = 10 * sin(0.5236) ≈ 5 单位/秒(垂直每秒移动5个单位)

内容的提问来源于stack exchange,提问作者Commander Of The Wind

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:01:22