gpt4 book ai didi

c++ - 在 SDL 中使对象独立移动(如枪声)

转载 作者:行者123 更新时间:2023-11-30 04:34:29 26 4
gpt4 key购买 nike

我一直在关注 SDL 上的 lazyfoos 教程,并且我大量修改了他的代码以制作一种可以四处移动的船游戏。我正在尝试让飞船开火,但我完全不知道该怎么做。我有船和它的运动以及图像在类里面的实际应用,我想知道是否有人有任何技术或某些方法可以有效地使船射击,使镜头独立移动然后在它离开时消失关闭屏幕。我知道我给出了一个模糊的解释,但我不想得到所有的答案,只是一些示例代码和正确方向的要点。

最佳答案

创建一个类来保存弹丸,其中包含您需要的所有信息,例如:

struct Projectile
{
Vector2 position;
Vector2 velocity;
shared_ptr<Image> graphic;
Time time_until_my_destruction;
bool dead;

void update(Time time_delta) {
if(!dead) {
position += velocity * time_delta;
time_until_my_destruction -= time_delta;
if(time_until_my_destruction < 0.0) dead = true;
}
}

void draw(DrawDest & dest) const {
graphic->draw(dest, position);
}

bool checkCollision(const GameObject & object) const {
return object.area().contains(position);
}
};

这个类显然不完整,你可能想调整访问级别,写一些构造函数和其他东西,但它应该给你基本的想法。

制作一个容器。当船开火时,将一个放入容器中。每一帧,调用更新,绘制,检查射弹是否已经死亡并检查与游戏对象的碰撞。如果发生碰撞,请施加损坏或其他任何东西。如果对象已死,则将其从容器中取出。

关于c++ - 在 SDL 中使对象独立移动(如枪声),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com