这是我所拥有的:一个 custom DrawableGameComponent
,包含我称之为 some 的孩子DrawUserPrimitve
。每个孩子都可以包含孩子等。我在每个组件中存储一个描述其形状的顶点列表,并Matrix
存储其相对位置(并最终转换)。所以在我“ DrawUserPrimitive
”之前,我需要“应用”一个矩阵。该矩阵必须是组件转换及其父组件及其父组件等的乘积。
这个系统允许我保持组件的变量独立,如果我理解正确,那就是要走的路。
为此,我BasicEffect
在 XNA 中看到了对象,我可以使用它应用一些矩阵。所以我试图将basicEffect.World
与我的component.Transformation
( Matrix
)相乘
所以我应该继续询问,但现在它没有给我我正在等待的结果。我想知道我是否选择了这样做的好方法。我看到 2 个系统具有相同的结果:
- 我现在的情况,有点像固定铅笔但移动你的纸
- 或者在绘制之前添加一个遍历我所有顶点的循环,以根据预期的转换相应地修改这些顶点。有点像移动铅笔而不是纸。
为了说明起见,一些代码:
public void override Draw(GameTime gameTime){
Game.basicEffect.World *= Transformation;
foreach(var child in this.Children){
child.Draw(gameTime);
}
Game.basicEffect.World *= Matrix.Invert(Transformation);
}