所以这是我的情况:我有一个太空飞船游戏,每个太空飞船都可以瞄准另一艘船并发射鱼雷,并且鱼雷需要沿着方向传播,该向量必须与距离无关。
我正在寻找一种创建返回D3DXVECTOR3
的方法,如下所示:D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)
有人在这件事上有经验吗?如果有人甚至可以将我引向任何体面,易于理解的D3D数学教程,那就太好了,因为到目前为止,我发现的所有内容都是基于渲染图像而不是数学方程式的。
谢谢!
-瑞安
最佳答案
如果要从firer
开始并指向target
的方向矢量,只需从firer
减去target
即:
direction = target - firer;
D3DX库中有D3DXVec3Subtract。
如果要使用单位法线,即单位长度为1的向量,请使用D3DXVec3Normalize将其标准化。
因此,您将拥有:
D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)
{
D3DXVECTOR3 direction;
D3DXVec3Subtract(&direction, target, firer);
D3DXVec3Normalize(&direction, &direction);
return direction;
}