Tag: xna

将角度转换为矢量

我正在做一些游戏编程。 FWIW我正在使用XNA,但我怀疑这是否相关。 我想将度数转换为幅度为1的方向向量(即X和Y)。 我的起源(0,0)位于左上角。 所以我想要0度转换为[0,-1] 我认为最好的方法是采用我的North / Up定义并使用矩阵旋转它,但这似乎不起作用。 这是守则…… public class Conversion { public static Vector2 GetDirectionVectorFromDegrees(float Degrees) { Vector2 North= new Vector2(0, -1); float Radians = MathHelper.ToRadians(Degrees); var RotationMatrix = Matrix.CreateRotationZ(Radians); return Vector2.Transform(North, RotationMatrix); } } ……这是我的unit testing…… [TestFixture] public class Turning_Tests { [Test] public void Degrees0_Tests() { Vector2 result = Conversion.GetDirectionVectorFromDegrees(0); Assert.AreEqual(0, result.X); […]

如何在运行时在XNA中加载纹理?

我正在开发一个使用XNA框架进行3D渲染的应用程序。 我现在想从文件加载纹理。 到目前为止我找到了两种方法: Texture2D.FromStream(GraphicsDevice, Stream)这种方法的问题是它只加载gif,png和jpg,我还需要支持tga图像。 创建ContentManager对象。 这种方法的问题在于,似乎需要将所有纹理静态添加到项目中,从文档中说明:“在ContentManager加载资产之前,您需要将资源添加到游戏项目中”。 有问题的程序是一个关卡编辑器,需要的纹理事先不知道。 有没有其他简单的方法来加载纹理,我正在考虑使用其他类加载图像(虽然我不知道哪个,我不是很熟悉C#)然后可能使用Texture2D.SetData方法? 有没有其他简单的方法来实现我想要实现的目标?

如何在XNA中调整和保存Texture2D?

在我为XNA游戏制作的关卡编辑器(编辑器也在XNA中)我允许缩放Texture2D对象。 当用户试图保存关卡时,我想实际调整磁盘上的图像文件大小,这样就不需要在游戏中进行缩放。 有没有一种简单的方法可以从缩放的Texture2D对象创建图像文件(首选PNG)?

手动控制何时重绘屏幕

我正在尝试为XNA制作一个回合制的roguelike引擎。 我基本上是使用一个名为libtcod的基于SDL的roguelike库完成之前的工作来移植游戏。 如何修改基本的XNA模板,使游戏不会每帧重绘屏幕,而是在我想要的时候?

在XNA中拍摄屏幕截图

如何在XNA中截取屏幕截图? 没有System.Drawing.Graphics.CopyFromScreen或Win32API可以吗? 如果不可能,有没有办法将System.Drawing.Bitmap绘制到游戏中? 我希望它会采用屏幕截图,然后以全屏模式加载游戏,然后打印屏幕截图。 谢谢。

为什么要使用服务(IServiceProvider)?

我是从探索XNA框架来讨论这个问题的,但我想要一个大致的了解。 ISomeService someService = (ISomeService)Game.GetServices(typeof(ISomeService)); 然后我们对界面中的任何函数/属性做一些事情: someService.DoSomething(); // let’s say not a static method but doesn’t matter 我试图弄清楚为什么这种实现比以下更好: myObject = InstanceFromComponentThatWouldProvideTheService(); myObject.DoSomething(); 当您使用服务方式获取接口时,您实际上只是获取了提供服务的组件实例。 对? 你不能有一个接口“实例”。 而且只有一个类可以成为服务的提供者。 所以你真正拥有的只是组件类的一个实例,唯一的区别是你只能访问组件对象的子集(界面中的任何子集)。 这有什么不同于公共和私人方法和属性? 换句话说,组件的公共方法/属性是 “接口”,我们可以停止所有这些迂回。 您仍然可以更改实现“接口”的方式而不会破坏任何内容(直到您更改方法签名,但这也会破坏服务实现)。 无论如何,组件和服务之间将存在一对一的关系(多个类不能注册成为服务的提供者),并且我看不到类是提供者不止一项服务(srp和所有)。 所以我想我想弄清楚这种框架要解决什么问题。 我错过了什么?

使用XNA绘制矩形

我正在做游戏。 当有事情发生时,我想在屏幕上突出显示一个位置。 我为我创建了一个类,并找到了一些绘制矩形的代码: static private Texture2D CreateRectangle(int width, int height, Color colori) { Texture2D rectangleTexture = new Texture2D(game.GraphicsDevice, width, height, 1, TextureUsage.None, SurfaceFormat.Color);// create the rectangle texture, ,but it will have no color! lets fix that Color[] color = new Color[width * height];//set the color to the amount of pixels in the textures for (int […]

xml序列化已保存的游戏数据

我正在尝试编写一种方法来为游戏保存一些基础数据。 目前我正在尝试以xml格式保存数据,其中父元素包含元素数组,其中包含索引,完成和尝试的字段。 这是我第一次尝试序列化c#中的任何内容,所以我遇到了一些问题,目前,当我尝试deserialize化文件时,它会因为invalidoperationexception (底部的exception细节)。 这是代码。 public void SaveData() { const string filename = “data.vision”; #if WINDOWS_PHONE IsolatedStorageFile dataFile = IsolatedStorageFile.GetUserStoreForApplication(); #else IsolatedStorageFile dataFile = IsolatedStorageFile.GetUserStoreForDomain(); #endif try { // Create an isolated storage stream and initialize it as null. IsolatedStorageFileStream isolatedFileStream = null; // Open the isolated storage stream, and write the save data file. […]

在XNA / C#中添加自定义光标?

我目前正在XNA开发游戏。 我想在游戏中添加一个游标(不是标准的Windows游标)。 我已经将精灵添加到我的内容文件夹中。 我有一个找到鼠标位置的方法,但我不知道如何在窗口中显示光标。 这是我用来找到鼠标位置的方法(我在Game1类的开头实例化了一个“MouseState”类): public int[] getCursorPos() { cursorX = mouseState.X; cursorY = mouseState.Y; int[] mousePos = new int[] {cursorX, cursorY}; return mousePos; }

在WinForms中嵌入XNA

是否可以在C#WinForm或C ++窗口中嵌入XNA游戏。 如果是,那么如何。 我想使用普通的UI控件并拥有游戏的窗口界面,以实现更具交互性和动态的模拟。