微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在为我的 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 举报,一经查实,本站将立刻删除。