gpt4 book ai didi

C++ 弹道

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:29 25 4
gpt4 key购买 nike

我正在使用 OpenGL 创建 3D 空间。我有一艘可以发射激光的宇宙飞船。

到目前为止,我已经掌握了它,以便激光一旦发射就会更深入 Z 轴。但是我正在尝试制作一个带有十字准线的正确瞄准系统,以便您可以在任何方向瞄准和射击,但我没有成功地尝试更新激光的路径。

我有一个基于激光末端和起始末端的方向 vector ,它是从瞄准中获得的。

我应该如何正确更新激光的 X、Y、Z 值(或 vector )以使其看起来自然?

最佳答案

我想我明白了。

假设您从作为 3D vector 的瞄准方向开始,将其称为“aimDir”。然后在您的更新循环中将所有 3(x、y 和 z)添加到射弹“位置”。 (好吧,在光速下你实际上看不到任何运动,但我想我明白你的意思了)。

void OnUpdate( float deltaT )
{
// "move" the laser in the aiming direction, scaled by the amount of time elapsed
// since our last update (you probably want another scale factor here to control
// how "fast" the laser appears to move)

Vector3 deltaLaser = deltaT * aimDir; // calc 3d offset for this frame
laserEndpoint += deltaLaser; // add it to the end of the laser
}

然后在渲染例程中将激光从发射点绘制到新端点:

void OnRender()
{
glBegin(GL_LINES);
glVertex3f( gunPos.x, gunPos.Y, gunPos.z );
glVertex3f( laserEndPoint.x, laserEndPoint.y, laserEndPoint.z );
glEnd();
}

我有点冒昧,因为我不知道您使用的是 glut、sdl 还是什么。但我确定您至少有一个更新函数和一个渲染函数。

警告,仅从枪到激光末端画一条线可能在视觉上令人失望,但它将是添加更好效果(粒子系统、布隆过滤器等)的重要引用。一个快速的改进可能是使激光(线)的正面颜色明亮,背面黑色。和/或像机枪一样制作多条线。随意尝试 ;-)

另外,如果激光源直接在观察者面前,您只会看到一个点!所以你可能想作弊一点,从观察者的正下方或右侧开火,然后稍微向上或向内开火。特别是如果你的每一侧(机翼?)都有一个,看起来像传统机器一样会聚枪。

希望对您有所帮助。

关于C++ 弹道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com