• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Opengl Игра

  • Автор темы isma
  • Дата начала
I

isma

Здравствуйте. Хочу повторить игру Астероиды. Не получается "научить" объект стрелять(стреляет криво, пули летят словно они привязаны к кораблю).
Инициализация 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;
}
 
R

rrrFer

но в приведенном коде совсем не видно как ты пулю создаешь - я думаю должен создаваться новый объект, никак не связанный с кораблем.
 
I

isma

да, пуля создается как отдельный объект. Вопрос в том, как в начальные координаты пули запихать координаты корабля, а уже к этим координатам прибавлять скорость пули.
 
R

rrrFer

я не понимаю проблемы. Координаты корабля есть? скорость пули задай другую (обычно большая чем у корабля [если не бомба, например]).

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

isma

Корабль, пуля создаются нормально. Пуля начинает движение. И если сейчас начать поворачивать корабль налево/направо, то впереди корабля пуля тоже поворачивается налево/направо, будто пуля движется по лучу.
 
R

rrrFer

И если сейчас начать поворачивать корабль налево/направо, то впереди корабля пуля тоже поворачивается налево/направо, будто пуля движется по лучу.
так значит она у тебя как-то связана с кораблем? )
а я уже несколько раз писал, что связи быть не должно:
новый объект, никак не связанный с кораблем.
Создается новый игровой объект совсем отдельный от корабля

Если она не связана с кораблем - то даже не узнает что он поворачивает.

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

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

isma

Все, разобрался. Проблема была в рисовании корабля - glPushMatrix стоял в неправильном месте)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!