我想为使用openGL / glut开发的游戏制作FPS相机。我想总是看到枪的同一部分。因此,我想将枪固定在屏幕上,并且当我的相机改变时,我的枪也改变。相机旋转时会出现问题。在某点上我丢了枪,看不到它。我有一堂课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));
}
};
错误出现在渲染方法中。