Я хочу сделать FPS камеру для игры, разработанной в openGL / glut. Я хочу видеть одну и ту же часть оружия всегда. Итак, я хочу прикрепить мой пистолет к экрану, и когда моя камера меняется, мой пистолет тоже меняется. Проблема возникает, когда моя камера вращается. В какой-то момент я потерял свой пистолет и не вижу его. У меня один класс GunCamera
Я попытался установить пистолет на то же вращение, что и камера, и почти на то же положение, что и он. Но это не удается, когда я вращаюсь. У меня есть класс GunCamera
, как это:
class GunCamera : public Camara
{
Solido *s;
public:
void setSolido(Solido *s) { this->s = s; }
Solido *getSolido() { return s; }
GunCamera(double x = 0, double y = 1.65, double z = 0) :Camara(x, y, z) {}
void update(double dt) {
//Transform to radians
double ry = rot2rad(getRot().getY());
Vector3D vel = { -sin(ry),0,cos(ry) };
setPos(getPos() - vel * dt);
}
void render() {
glRotatef(getRot().getX(), 1, 0, 0);
glRotatef(getRot().getY(), 0, 1, 0);
glRotatef(getRot().getZ(), 0, 0, 1);
glTranslatef(-getPos().getX(), -getPos().getY(), -getPos().getZ());
s->setRot(Vector3D(this->getRot().getX(), -this->getRot().getY(), this->getRot().getZ()));
s->setPos(Vector3D(this->getPos().getX(), this->getPos().getY() - 3.5, this->getPos().getZ() + 5));
}
};
Ошибка в методе рендеринга.