OpenGL向玩家面向的方向发送射弹

时间:2015-01-13 17:02:06

标签: opengl

我有玩家x,y,z,方向值。现在我想在玩家面向的方向上翻译另一个模型,但我不知道该怎么做。

这是我到目前为止的代码:

glPushMatrix();
    glTranslatef(proj.getCoordx(), proj.getCoordy(), proj.getCoordz());
    glRotatef(90, 0, 1, 0);
    glRotatef(GRAUS(GRAUS(proj.getDir()), 0, 1, 0);
    glScalef(SCALE_BATMAN + 0.005, SCALE_BATMAN + 0.005, SCALE_BATMAN + 0.005);
    mdlviewer_display(obsModel[JANELA_NAVIGATE][6]);
glPopMatrix();
proj.setCoordx(proj.getCoordx() + 0.1*cos(proj.getDir()));
proj.setCoordz(proj.getCoordz() + 0.1*cos(proj.getDir()));
proj是射弹物体。
该方法第一次运行时,proj对象具有玩家当前位置,因此弹丸可以脱离他。接下来我希望它朝着玩家面向的方向移动。我的等式有问题吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:0)

您的模型可能正面向Y轴(或Z轴)。因此,指定单位矢量(0,1,0)并将相同的变换应用于应用于模型的矢量。现在将射弹向下发送变换后的矢量。

查看您的代码可能只是一个简单的拼写错误:

proj.setCoordx(proj.getCoordx() - 0.1*sin(proj.getDir()));
proj.setCoordz(proj.getCoordz() + 0.1*cos(proj.getDir()));