Java - 圆形玩家转身

标签 java path curve

我正在制作一个游戏,我让玩家移动,但是当玩家沿对角线转动时(例如,向上,然后向右上方),它并不像我想要的那么平滑。 这是显示问题的图片: enter image description here

玩家线指示玩家的路径。 怎样才能达到这样的效果呢?

我正在考虑生成一条贝塞尔曲线供玩家遵循,但我不知道如何让玩家遵循它。

最佳答案

您使用贝塞尔曲线的假设是正确的。我建议(如果您还没有)编写一个 Update 方法,用于逐帧控制玩家的移动。换句话说;一种在单独的线程中运行并触发要沿曲线移动的玩家的位置更新的方法。它将充当队列,仅在经过给定时间后执行移动等。

至于如何让玩家沿着曲线移动,我会计算沿着曲线的多个点,假设每条曲线 25 个点。有了每个点,指向下一个点。这些将像航路点一样 - 向玩家发出在短时间内移动到下一个航路点的指令。因此,如果您想在 5 秒内沿着整条曲线移动玩家,则玩家需要每 0.2 秒从一个路径点“跳跃”到另一个路径点。

如果您希望运动减少“抖动”,则需要编写线性插值,这实际上会进一步计算每个曲线航路点之间更小的航路点划分。

您可以找到针对上述项目的许多有用方法,here

在下图中,蓝色 Blob 是航路点。 Visual Description of points made above

<小时/>

替代(更简单)曲线方法

使用贝塞尔曲线的另一种方法是制作一条非常简单的平滑曲线:在右转的情况下;从两个值开始 - Xfactor = 0,Yfactor = 10。对于此示例,我假设围绕曲线的移动速度为 10 个单位(例如,可以是像素)。对于每一帧,您将 Xfactor 和 Yfactor 添加到玩家当前位置。您还可以从 Y 因子中减去一个常数(假设 0.5 个单位)并将其添加到 X 因子中。继续前进,直到 Xfactor 等于 10 并且 Yfactor 等于 0。这应该会导致玩家“移动”90 度。为了让玩家移动 45 度,您需要一直移动,直到 Xfactor 等于 5,因为这将是 10 的一半。为了让玩家沿着该方向移动,您需要不断将 Xfactor 和 Yfactor 添加到每帧/更新上的玩家位置。 同样,为了让玩家转弯,您需要随着时间的推移更改 Xfactor 和 Yfactor。

关于Java - 圆形玩家转身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34841646/

相关文章:

java - Apache/Tomcat/Mod.JK 的高容量设置

java - J2ME 中的日期问题

php include_once 路径

svg - 自行车车轮路径和贝塞尔曲线

c++ - 我怎样才能在Qt中绘制一条由画笔填充的开放曲线?

Java如何查找类? (试图加载驱动程序 : com. mysql.jdbc.Driver)

java - 从 hibernate 中截断/删除

ios - Swift UIImagePickerController 动态转换获取路径失败

c# - 从物理路径获取相对虚拟路径

math - 获取贝塞尔曲线的边界