Opengl Игра

Тема в разделе "Разработка игр и приложений к ним", создана пользователем isma, 28 янв 2013.

Наш партнер Genesis Hackspace
  1. isma

    isma New Member

    Регистрация:
    28 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте. Хочу повторить игру Астероиды. Не получается "научить" объект стрелять(стреляет криво, пули летят словно они привязаны к кораблю).
    Инициализация opengl - уроки NeHe.
    Помогите правильно написать void Bullet::update()
    class Object
    {
    public:
    float pos_x, pos_y, pos_z;
    float angle_1, angle_2;
    float speed;
    float max_speed;
    float low_speed;
    float delta_speed;

    void update();
    void Draw();

    void set_position(float x, float y, float z);
    void set_angle(float x, float y);
    void set_speed(float x);
    };

    Object* player = new Object();
    ...
    ...
    class Bullet
    {
    public:
    float pos_x, pos_y, pos_z;
    void update();
    void render();
    };
    ...
    ...
    void Bullet::update()
    {
    pos_x += player->pos_x + 2 * cos(player->angle_1*3.14159/180) * sin(player->angle_2*3.14159/180)/50.0f;
    pos_y += player->pos_y + 2 * sin(player->angle_1*3.14159/180) * sin(player->angle_2*3.14159/180)/50.0f;
    pos_z += player->pos_z + 2 * cos(player->angle_2*3.14159/180.0)/50.0f;
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.325
    Симпатии:
    43
    но в приведенном коде совсем не видно как ты пулю создаешь - я думаю должен создаваться новый объект, никак не связанный с кораблем.
     
  3. isma

    isma New Member

    Регистрация:
    28 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    да, пуля создается как отдельный объект. Вопрос в том, как в начальные координаты пули запихать координаты корабля, а уже к этим координатам прибавлять скорость пули.
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.325
    Симпатии:
    43
    я не понимаю проблемы. Координаты корабля есть? скорость пули задай другую (обычно большая чем у корабля [если не бомба, например]).

    Создается новый игровой объект совсем отдельный от корабля и наверное добавляется в какой-то менеджер игровых объектов, который там будет заниматься его отрисовкой в нужном порядке (в учетом слоя) и прочими штуками, типа обнаружения столкновения с другими объектами.
     
  5. isma

    isma New Member

    Регистрация:
    28 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Корабль, пуля создаются нормально. Пуля начинает движение. И если сейчас начать поворачивать корабль налево/направо, то впереди корабля пуля тоже поворачивается налево/направо, будто пуля движется по лучу.
     
  6. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.325
    Симпатии:
    43
    так значит она у тебя как-то связана с кораблем? )
    а я уже несколько раз писал, что связи быть не должно:
    Если она не связана с кораблем - то даже не узнает что он поворачивает.

    Либо твоя пуля получает сигналы о нажатии кнопок юзером - этого тоже быть не должно.

    Мы не знаем где ты наговнокодил, приведенного кода не достаточно.
     
  7. isma

    isma New Member

    Регистрация:
    28 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Все, разобрался. Проблема была в рисовании корабля - glPushMatrix стоял в неправильном месте)
     
Загрузка...

Поделиться этой страницей