ОБСУЖДЕНИЕ

Opengl Игра

6 ответов 5,9 тыс.
AI-выжимка обсуждения скоро

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

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

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

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

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

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