在XNA中是否有3D等效夹具?

时间:2009-11-15 22:40:10

标签: c# xna

我正在构建一个3D游戏,但我只计划使用2D视角,因此不会将z轴置于等式中, 我希望能够限制我的一个模型的移动,使它不会移出不动的视野,

当我设计2D时,它只是简单地使用钳位,但我似乎无法想象如何在3D中执行此操作

任何帮助将不胜感激

此致

3 个答案:

答案 0 :(得分:1)

如果你只想做与2D钳位相同的事情 - Vector3.Clamp设置你传递的两个边界向量的Y(通常是'UP')分量为。

我对这个问题稍微感到困惑,似乎你所追求的是一种碰撞检测形式,如果你的模型可以适应边界球相对论,视锥体This article可能会有所帮助。很好。

对于定义视图空间的所有平面,您将需要进行测试碰撞。如果它是你使用的透视相机,你需要得到Frustum Planes,否则如果它是一个正交相机,它们就是制作视图空间边界框的平面(一个长方体的定向方式与相机)。

答案 1 :(得分:1)

只需使用Vector3.Clamp(Vector3 value1, Vector3 min, Vector3 max)并使用Vector3上的构造函数,该构造函数采用Vector2和int(对于z值)。

答案 2 :(得分:-1)

所以你想要伪代码:

if (object.position+movementVec is in view of camera)
   object.position+=movementVec;