预测子弹击中的位置
Predict where the bullet hits
我正在用C++和SFML制作塔防游戏。我已经制作了地图,让敌人移动,还有一点炮塔类。炮塔应该朝向敌人旋转,并在我击中空格键时向它射击。我想我把旋转做好了。当我射击时,我希望它计算子弹击中敌人的位置,我该怎么做?
这是我当前的代码:
enemy->setOrigin(enemy->getGlobalBounds().width / 2, enemy->getGlobalBounds().height / 2);
float degrees = atan2(this->getPosition().y - enemy->getPosition().y, this->getPosition().x - enemy->getPosition().x) * 180 / PI;
degrees -= 90;
this->setRotation(degrees);
degrees -= 90;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Space) && !this->spaceKey){
//Bullet: map, posX, posY, degrees, distance
this->entityManager->Add("Bullet", new Bullet(this->map, this->getPosition().x, this->getPosition().y, degrees, 500));
}
首先,您必须为我们定义游戏中的热门歌曲。如果你想击中像矩形这样的东西,最简单但最糟糕的检查命中方法是通过帧来"模拟"子弹帧的运动,检查它是否击中了某物或越界了(只有当你在编程方面非常不熟练时,你才应该这样做)。检查命中的另一种更高级的方法是进行光线投射。由于子弹是直的,它会形成一条线,光线投射应该可以帮助您找到对撞机。我在这里找到了一个关于光线投射的合适教程,但如果它不满足你,你可以很容易地找到另一个。如果找到子弹碰撞位置的两种方法都不满足你,你可以实现某种线矩形碰撞或类似的东西来支持你的需求。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 如何选择在 csv 文件中输出的位置
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 如何在特定位置追加 json 文件
- 预测子弹击中的位置
- 在子弹物理Hello World项目中更改碰撞体的位置