Opengl Игра

isma

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

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

isma

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

rrrFer

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

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

isma

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

rrrFer

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

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

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

isma

New Member
28.01.2013
4
0
#7
Все, разобрался. Проблема была в рисовании корабля - glPushMatrix стоял в неправильном месте)