jjzjj

C# 数学与 XNA MathHelper

自从我需要在C#中使用PI(3.1415...)以来,我一直使用Math.PI来获取值。通常我只会使用像Math.PI/2.0或2.0*Math.PI这样的值,但现在我刚刚注意到XNA提供了一个MathHelper类。这样做的好处是我可以调用MathHelper.PiOver2和MathHelper.TwoPi,从而使极其微不足道的步骤变得更加微不足道。;-)我假设这两个类可以互换,但我注意到Math.PI/2.0!=MathHelper.PiOver2。我试图研究为什么会这样,但我一无所获。所以,我想我会在这里碰碰运气。关于使用PI,Math类和MathHelper类之间有什么区别吗

c# - 两个向量 2D 之间的角度

我正在尝试计算两个向量之间的角度。我试过了,但它总是返回零:publicdoubleGetAngle(Vector2a,Vector2b){doubleangle=Math.Atan2(b.Y,b.X)-Math.Atan2(a.Y,a.X);returnangle;}GetAngle(newVector2(1,1),newVector2(50,50)); 最佳答案 你应该看看atan2(here)的文档。您正在寻找的是找到B(左上向量)和A(右下向量)之间的差异,然后将其作为参数传递给atan2returnMath.Atan2(b

c# - 设计游戏对象

我最近开始使用MicrosoftXNA和C#开发一款自娱自乐的小游戏。我的问题是关于设计游戏对象和继承它的对象。我将把游戏对象定义为可以在屏幕上呈现的东西。因此,为此,我决定创建一个基类,所有其他需要渲染的对象都将继承该基类,称为GameObject。下面的代码是我制作的类:classGameObject{privateModelmodel=null;privatefloatscale=1f;privateVector3position=Vector3.Zero;privateVector3rotation=Vector3.Zero;privateVector3velocity=Vec

c# - 处理 XNA + lidgren 中的滞后

我正在试验lidgren在XNA中,我遇到了一些“滞后”问题。我已经下载了他们的XNAsample并注意到即使他们的样本也滞后。问题是,另一侧的移动并不流畅,我正在LAN(实际上是在同一台计算机上)而不是通过Internet进行尝试。有没有人因为与lidgren和XNA的连接滞后而遇到同样的运动不流畅的问题? 最佳答案 您直接链接的示例将位置设置为从网络接收到的任何位置,这对于多人游戏来说是个坏主意!在真实游戏中你应该做的是在本地位置和远程位置之间进行插值。因此,您的接收方法看起来有点像这样:voidReceive(packet){

c# - XNA/MonoGame : Getting the Frames Per Second

我正在尝试获取游戏的当前FPS,但我只能找到每秒更新FPS变量的方法。例如。https://github.com/CartBlanche/MonoGame-Samples/blob/master/Draw2D/FPSCounterComponent.cs和http://www.david-amador.com/2009/11/how-to-do-a-xna-fps-counter/有没有办法让FPS标签持续更新? 最佳答案 这是我刚才写的一个FPS计数器类。您应该能够将它放入您的代码中并按原样使用它..publicclassFram

c# - 我如何使用 XNA 中的着色器为单个像素着色?

我的XNA项目中有一个标准的800x600窗口。我的目标是根据包含bool值的矩形数组为每个像素着色。目前我正在使用1x1纹理并在我的数组中绘制每个Sprite。我是XNA的新手并且有GDI背景,所以我正在做我在GDI中会做的事情,但它的扩展性不是很好。我在另一个问题中被告知要使用着色器,但经过大量研究,我仍然无法找到如何实现这一目标。我的应用程序循环遍历矩形数组的X和Y坐标,根据每个值进行计算,然后重新分配/移动数组。最后,我需要用新值更新我的“Canvas”。我的阵列的较小样本如下所示:0,0,0,0,0,0,00,0,0,0,0,0,00,0,0,0,0,0,01,1,1,1,1

c# - 当声音仍在播放时,Windows Phone 8 上的 XNA 会循环播放音频

我需要一种在声音仍在播放时开始/停止循环的方法。我发现同时播放多种声音的最佳方式是使用XNA。因此,我从包含音频剪辑的SoundEffect对象开始创建了一个SoundEffectInstance。现在的问题是我有一个按钮可以将此剪辑的状态从“循环”更改为“非循环”,反之亦然。问题来了:它抛出一个异常,说明必须在第一次播放之前设置循环。所以我想,当从“非循环”切换到“循环”时,我可以等待声音停止,然后重新创建SoundEngineInstance,设置IsLooped=true并让它重新开始。这个可以用,但是有一些延迟,这会让你失去时间,所以它没什么用。我正在寻找一种在播放声音时设置或

c# - 如何在应用新设置时防止 GraphicsDevice 被处置?

我的游戏窗口允许手动调整大小,这意味着它可以像任何其他普通窗口一样通过拖动其边缘来调整大小。该游戏还使用了RenderTarget2Drt2d,主要渲染目标在主要绘制方法中设置为:GraphicsDevice.SetRenderTarget(rt2d),但它被重置回null(默认渲染目标)在主要Draw方法的末尾,这让人​​有点困惑:这真的是问题的根源吗,在RenderTarget设置为rt2d之间调整游戏窗口大小,而不是重置回默认值?现在看起来是这样。主要Draw方法中的代码应该总是将主要渲染目标重置回null,所以没有预期的情况,这通常不会发生。不过,调整游戏窗口大小的结果有时会导

c# - 一些简单的 XNA/HLSL 问题

我最近开始接触HLSL编程,我很好奇我正在做的一些事情实际上是如何工作的。例如,我这里有一个非常简单的着色器,可以将任何蓝绿色像素着色为红色。sampler2DmySampler;float4MyPixelShader(float2texCoords:TEXCOORD0):COLOR{float4Color;Color=tex2D(mySampler,texCoords.xy);if(Color.r==0&&Color.g==1.0&&Color.b==1.0){Color.r=1.0;Color.g=0.5;Color.b=0.5;}returnColor;}techniqueSim

c# - Xbox360 上的 XNA 和 Linq

请原谅新手问题,但我想知道如果我在我的XNA应用程序中使用了Linq,它仍然可以在Xbox360上运行吗? 最佳答案 是的,Xbox360和Zune的Xna框架支持LINQ。(在$PROGRAM_FILES$\MicrosoftXNA\XNAGameStudio\v3.1\References\Xbox360中查看System.Core.dll) 关于c#-Xbox360上的XNA和Linq,我们在StackOverflow上找到一个类似的问题: https: