我已经读过雷默的飞行学教程,并想通过增加反空中炮塔射击飞船来扩展它。我对用c#和xna编程仍然很陌生,在数学方面也有点糟糕:P.我将如何计算炮塔将如何跟踪在3轴上运动的飞船?通过本教程,我假设我将使用四元数,并使用lerp来尝试和平滑跟踪运动?
我的模型只是一个简单的持枪悬浮球,所以没有动画或骨骼需要担心。
发布于 2013-03-18 04:42:59
四元数是正确的关键字!看这个问题,它处理相同的问题。
基本上,你的对象有一个位置和一个方向。要将炮塔指向飞船,需要找到从炮塔指向另一艘船的矢量。然后你可以操纵炮塔指向飞船,并开始拍摄逻辑/动画。
发布于 2013-03-18 04:53:18
你可以使用"LookAt“视图矩阵进行炮塔的世界变换。
但是,这个方法需要计算出向上向量。两个垂直向量的交叉积将给你第三个垂直向量,在这个系统的手感方向上。
/// position = my position, lookat = the position of the object I want to look at
public static Matrix LookAt(Vector3 position, Vector3 lookat)
{
Matrix rotation = new Matrix();
rotation.Forward = Vector3.Normalize(lookat - position);
rotation.Right = Vector3.Normalize(Vector3.Cross(rotation.Forward, Vector3.Up));
rotation.Up = Vector3.Normalize(Vector3.Cross(rotation.Right, rotation.Forward));
return rotation;
}
https://gamedev.stackexchange.com/questions/51255
复制相似问题