如何在不改变半径的情况下以更高的速度跟随曲线

问题描述

我正在为我的 cpp 课程制作游戏。我有一个玩家,我想沿着玩家将要遵循的路径(用于瞄准)从前方发射粒子束。 为了使粒子在玩家面前射出,它们必须以比玩家更快的速度移动,但是如果粒子以更快的速度行进,它们会形成比玩家将遵循的更宽的曲线,因为它们行进得更远更新之间。也许我可以根据更新之间的时间来确定转弯率,但我不确定如何应用它来获得我想要的结果。是否有一种数学或编程方法可以使粒子在具有更高速度的同时遵循相同的曲线?我猜我需要减少与速度增加相关的曲线角度,但我不确定如何找到或编写一个公式。

一个解决方案是我可以绘制一条曲线而不是发射粒子。我正在使用的工具有一种在两点之间绘制直线的方法。我将不得不做更多的思考和研究,以确定如何以正确的曲率绘制线条。这也没有解决我希望也能够按照该曲线拍摄射弹物体的问题,同时解决粒子问题似乎可以解决两者。

额外信息:

玩家和粒子的位置存储在一个数学向量(x 和 y)中。它们面向的方向是存储在浮点数中的弧度。通过添加到方向来计算新方向,然后将其转换为向量并将其乘以对象的速度,然后将该向量与位置向量相加来计算变化。看起来像这样。

if (Core::Input::Ispressed('A')) turnSpeed -= rotationSpeed * dt;
if (Core::Input::Ispressed('D')) turnSpeed += rotationSpeed * dt;
transform.rotation += turnSpeed;
nc::Vector2 translation = nc::Vector2::Rotate(nc::Vector2::right,transform.rotation) * speed * dt;
transform.position += translation;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)