c++ - 根据另一个 Sprite SDL2 和 C++11 的旋转更改 Sprite 的位置

标签 c++ visual-c++ c++11 sdl

我有一个太空主题游戏,其中有一艘宇宙飞船随相机移动并使用 SIN&COS 函数旋转,精度为 1 度。宇宙飞船正确移动和旋转。我现在正在研究从所述宇宙飞船发射的子弹。

到目前为止,无论飞船面向哪个方向,我都可以创建一个直接从飞船出发的镜头。但是我想知道是否有一种方法可以让我根据宇宙飞船所面对的位置生成一个镜头?生成后,我可以处理所有角度的镜头。我还不知道如何让它根据它的旋转在宇宙飞船前面产卵。

我在 C++ 11 中使用 SDL2。

如果可能的话,我不希望你直接告诉我代码,因为我不会从中学到任何东西。我将其用作学习经验。我是否需要为宇宙飞船 360 度转动周期的每 1 度角说明生成位置的点?或者他们是一种更动态的方式来做这样的事情?

最佳答案

您可以通过对船舶旋转应用三角函数来计算 x 和 y 偏移量。将其添加到船舶位置,您将获得弹丸的绝对位置。例如:

bulletRotation = shipRotation;
bulletCenterX = shipCenterX + cos(shipRotation) * offset;
bulletCenterY = shipCenterY + sin(shipRotation) * offset;

如果您已经实现了子弹的物理特性,您还可以重复使用该逻辑。让子弹往前一点就行了。

确保不要混合度数和弧度。

关于c++ - 根据另一个 Sprite SDL2 和 C++11 的旋转更改 Sprite 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973221/

相关文章:

c# - 编译一个dlib的.dll文件

c++ - 模板基类的调用方法

c - 将 MinGW 程序与 MSVC 静态库链接时发出警告

c++ - 自动选择按值传递还是按引用传递

c++ - 仅初始化 c++11 元组的第一个参数

c++ - Iterator<T> 来自 istream,无格式提取

c++ - 从一个变量的位到另一个变量的有效映射

c++ - extern const,哪个是声明,哪个是前向声明

c++ - 错误 LNK2020 : unresolved token (0A000015) IID_IPropertySetStorage

c++ - 如何在 constexpr 函数中强制出现编译错误,而不是让它衰减到非 constexpr 上下文中?