使对象在SDL中独立移动(如枪击)

时间:2011-05-12 03:16:17

标签: c++ sdl

我一直在关注SDL上的lazyfoos教程,并且我已经大量修改了他的代码以制作一种船游戏,它会四处移动。我正试图让船射击,但我完全不知道如何去做这件事。我有船,它的动作和图像在课堂上的实际应用,我想知道是否有人有任何技术或某些方法有效地使船射击,使镜头独立移动然后消失屏幕外。我知道我给出了一个模糊的解释,但我不想给出所有的答案,只是一些示例代码和正确方向上的一点。

2 个答案:

答案 0 :(得分:2)

创建一个类来容纳一个射弹,包含你需要的所有信息,例如:

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);
    }
};

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

制作那些容器。当船发射时,将其中的一个放入容器中。每个框架,调用更新,绘制,检查抛射物是否已经死亡,并检查是否与游戏对象发生碰撞。如果发生碰撞,则施加伤害或其他。如果物体已经死了,请将其从容器中取出。

答案 1 :(得分:0)

我绝对推荐Aaron's Game Programming Tutorials,它使用C ++和SDL。