Заставить объект двигаться самостоятельно в SDL (как выстрел из оружия) - PullRequest
1 голос
/ 12 мая 2011

Я следовал инструкциям lazyfoos по SDL, и я сильно изменил его код, чтобы сделать своего рода игру для корабля, которая перемещается. Я пытаюсь заставить корабль стрелять, но я понятия не имею, как это сделать. У меня есть корабль, его движения и фактическое применение изображения в классе, и мне интересно, есть ли у кого-нибудь какие-либо приемы или определенные способы, которые эффективны для того, чтобы заставить корабль стрелять, делать выстрел самостоятельно и затем исчезать, когда он идет? за кадром Я знаю, что даю смутное объяснение, но не хочу, чтобы мне давали ответы на все вопросы, только небольшой пример кода и указание в правильном направлении.

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Создайте класс для хранения снаряда со всей необходимой информацией, например:

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

Этот класс, очевидно, не завершен, вы, вероятно, захотите внести коррективы в уровни доступа и написать некоторые конструкторы и другие вещи, но он должен дать вам основную идею.

Сделать контейнер из них. Когда корабль выстрелит, положите один в контейнер. Каждый кадр, вызывать обновление, рисовать, проверять, мертв ли ​​снаряд и проверять наличие столкновений с игровыми объектами. Если происходит столкновение, нанесите урон или что-то еще. Если объект мертв, выньте его из контейнера.

0 голосов
/ 12 мая 2011

Я могу только абсолютно порекомендовать Учебные пособия Аарона по программированию игр , в нем используются C ++ и SDL.

...