到目前为止,我设法创建了一个轮换的Quaternion
。现在唯一的问题是,我如何将它应用于某些立方体?正如当我按下键盘上的右键时,每个立方体都连续围绕原点旋转。XNA中的旋转立方体
作为参考,我有8个立方体放置在一个类似于魔方(2x2x2)的设置中。所以当我按右/左箭头时,“立方体”(由8个小立方体组成的大立方体)的右/左面顺时针/逆时针旋转90度。
多维数据集的一个的例子(出八个立方体总)声明:
GameObject subCube3 = new GameObject();
Vector3 subCube3Pos = new Vector3(-0.55f, -0.55f, 0.55f);
在我更新方法:
// declare rotation floats
float updownRotation = 0.0f;
float leftrightRot = 0.0f;
// get state of keyboard
KeyboardState keys = Keyboard.GetState();
// if key is pressed, change value of rotation
if (keys.IsKeyDown(Keys.Right))
{
leftrightRot = -0.10f;
}
// if key is pressed, change value of rotation
if (keys.IsKeyDown(Keys.Left))
{
leftrightRot = 0.1f;
}
// if key is pressed, change value of rotation
if (keys.IsKeyDown(Keys.Up))
{
updownRotation = 0.1f;
}
// rotation around axis
Quaternion addRot = Quaternion.CreateFromAxisAngle(new Vector3(1.0f, 0.0f, 0.0f), leftrightRot);
//rotation of cubes
cubeRotation = cubeRotation * addRot;
我绘制函数:
void DrawGameObject(GameObject gameobject)
{
//graphics.GraphicsDevice.RenderState.CullMode = CullMode.None;
foreach (ModelMesh mesh in gameobject.model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
effect.PreferPerPixelLighting = true;
effect.World =
Matrix.CreateScale(gameobject.scale) *
Matrix.CreateFromQuaternion(cubeRotation) *
Matrix.CreateTranslation(gameobject.position);
effect.Projection = cameraProjectionMatrix;
effect.View = cameraViewMatrix;
}
mesh.Draw();
}
}
我认为问题在于Matrix.CreateTranslation(gameobject.position)
明显影响我的所有立方体。我尝试过创建新的Vector3
,例如:c_component1 = Vector3.Transform(cube1pos, cubeRotation);
,但即使如此,我仍然不确定将其放在哪里并实际使用它。
任何想法的人?任何帮助都感激不尽。
我希望我有足够的代表编辑您的帖子并修复您的代码格式... – 2010-08-12 00:21:49
哇,谢谢你这样一个完全没有意义的帖子。如果您对我的实际问题和查询没有什么值得说的话,为什么还要在帖子中发帖? 如果除了对代码格式进行评论之外,您无法提供帮助 - 这很明显是这种方式,因为我从文件中复制了它 - 请打扰其他某个线程。 谢谢。 DaveT – DAVETELFA 2010-08-12 01:36:45
我对您的格式设置的评论并不打算亲自进行。但是,如果这就是你想要玩的方式:如果你太懒惰或无能为力让你的文章变得可读,甚至在向你指出之后(格式化帮助不难找到!),并且你对于有人(*两次*现在)花时间访问您的问题以回答它的目的而滥用,并且事实证明您的问题只是从您制作的主题的* middle *中的某处复制粘贴的在XNA论坛上,我没有看到任何人应该付出任何努力来帮助你的原因。 – 2010-08-12 11:08:19