固定转向和行进速度下的车辆轨迹计算方法

游戏车辆固定转向轨迹计算方法
本文介绍了在游戏车辆中实现固定转向角度的轨迹计算方法,以提供更真实的驾驶体验。通过几何概念、位置计算和解决思路,阐述了如何处理2D环境下的车辆轨迹,并提出简化计算的方案,以调整系数达到期望效果。文章还讨论了速度与转弯半径的关系,以及进阶的非线性速度处理方法。

游戏车辆固定转向轨迹计算

在这里插入图片描述

概述

车辆游戏是我们经常接触到的一类游戏,这里游戏在只用键盘操作时,往往非常不方便。这是因为这一类游戏大部分都是按下按键时转向,释放按键时方向就会自动转正。这种控制方式在实现方面比较容易。但是缺点也很明显,就是无法像现实中开车一样,我固定一个转向角度来做圆周(圆弧)运动。对于在弯道时,键盘的操作体验非常糟糕。
所以,就想到,采用转向角度来控制车辆转弯,挡位来控制速度(包括前进和后退)。这样的话,当按下左键时,车辆将一直按照一个拐弯角度来运行,在按下其他键之前,车辆将一直进行圆周(圆弧)运动。这中操作方式和现实比较接近,就像我们开车转弯后,必须回正方向盘一样。但是这种的程序实现起来稍微复杂一些,经过研究,特此公布车辆轨迹计算方法。

效果

这是效果展示:

2023-04-27 10-17-43

计算

几何概念

这里仅考虑2D环境下,正如我另外一篇文章所述,三角函数的天然局限性并不能很好的满足在整个圆周下的相互计算。简言之就是在0到360度范围内,存在一个三角函数值对应2个角度的问题。故我们需要自己解决该问题,不能简单的利用三角函数反算。解决途径两种如下:

  1. 自己编写全角函数;
  2. 利用复数计算;
    这两种方式的关键就是三角函数值不再用一个数字表示,而是采用两个数值表示。

位置计算

已知一个车辆的当前角度、转弯角度,和速度值,从理论来讲可以计算出它在任意时刻的准确位置和方向。
固定思维如下:

  1. 确定下一个位置刷新时间
  2. 利用速度和时间求导弧长
  3. 利用刷新时间求导刷新后转向角度
  4. 利用弧长和转向角度、起始点位置、当前角度求导圆形、圆形角,进而确定下一个刷新位置的坐标和旋转角度
    上述步骤虽说可以求导,但是步骤还是非常麻烦的。同时涉及计算绘图坐标系和笛卡尔坐标系的不同,非常容易计算出错或者混乱。
    除了这个因