首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >XNA 4.0中的三维炮塔跟踪

XNA 4.0中的三维炮塔跟踪
EN

Game Development用户
提问于 2013-03-18 03:34:48
回答 2查看 237关注 0票数 -1

我已经读过雷默的飞行学教程,并想通过增加反空中炮塔射击飞船来扩展它。我对用c#和xna编程仍然很陌生,在数学方面也有点糟糕:P.我将如何计算炮塔将如何跟踪在3轴上运动的飞船?通过本教程,我假设我将使用四元数,并使用lerp来尝试和平滑跟踪运动?

我的模型只是一个简单的持枪悬浮球,所以没有动画或骨骼需要担心。

EN

回答 2

Game Development用户

回答已采纳

发布于 2013-03-18 04:42:59

四元数是正确的关键字!看这个问题,它处理相同的问题。

基本上,你的对象有一个位置和一个方向。要将炮塔指向飞船,需要找到从炮塔指向另一艘船的矢量。然后你可以操纵炮塔指向飞船,并开始拍摄逻辑/动画。

票数 0
EN

Game Development用户

发布于 2013-03-18 04:53:18

你可以使用"LookAt“视图矩阵进行炮塔的世界变换。

请参阅Matrix.CreateLookAt

但是,这个方法需要计算出向上向量。两个垂直向量的交叉积将给你第三个垂直向量,在这个系统的手感方向上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
///  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;
}
票数 0
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/51255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文