XNA获取Y的网格值为X Reply

时间:2011-11-05 08:29:03

标签: c# xna xna-4.0

我无法尝试将Y的加载网格值设置为X值,以便执行一些非常有限的检测版本。基本上,我将获得相机的X值,并检测我的网格的Y值是否为5。如果是这样......那里有一堵墙。

我用这个加载我的模型:

landscape = Content.Load(“landscape”);

我用这个绘制模型:

      foreach (ModelMesh mesh in landscape.Meshes)
        {
            if (mesh.Name != "Billboards")
            {
                foreach (BasicEffect effect in mesh.Effects)
                {
                    effect.View = view;
                    effect.Projection = projection;

                    effect.LightingEnabled = true;

                    effect.DirectionalLight0.Enabled = true;
                    effect.DirectionalLight0.Direction = lightDirection;
                    effect.DirectionalLight0.DiffuseColor = lightColor;

                    //if (flashEnabled == true)
                    //{
                        effect.DirectionalLight1.Enabled = flashEnabled;

                        effect.DirectionalLight1.Direction = cameraFront;
                        effect.DirectionalLight1.DiffuseColor = lightColor;
                        effect.DirectionalLight1.SpecularColor = colorFlashLight.ToVector3();
                    //}


                    effect.AmbientLightColor = ambientLightColor;

                    effect.FogEnabled = fogEnabled;
                    effect.FogColor = color.ToVector3();
                    effect.FogStart = 9.75f;
                    effect.FogEnd = 10.25f;
                }

                device.BlendState = BlendState.Opaque;
                device.DepthStencilState = DepthStencilState.Default;
                device.RasterizerState = RasterizerState.CullCounterClockwise;

                mesh.Draw();

}

继续,在我的更新或输入函数中,我将运行一个评估函数来确定LandscapeVertexY @ CameraX是否大于值5。

任何帮助?

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,你试图通过使用指定的相机来检索顶点的渲染位置。

在这种情况下,您需要使用矩阵乘法在坐标空间中手动投影顶点的位置。这可以通过将位置与模型 - 视图 - 投影矩阵相乘来完成。 (可以使用XNA矩阵和向量完成。)