Tag: xna

XNA – 以正确的顺序绘制四边形(和基元)

我对XNA中的3D内容很新,不幸的是我遇到了一个问题我无法找到解决方案。 (甚至不知道问题是什么)。 简而言之:我在游戏中使用以下方法绘制四边形: effect.World = Matrix.Identity * Matrix.CreateRotationX(Rotation.X) * Matrix.CreateRotationY(Rotation.Y) * Matrix.CreateRotationZ(Rotation.Z) * Matrix.CreateTranslation(Position); // Apply camera-matrixes effect.View = viewMatrix; effect.Projection = projectionMatrix; graphics.VertexDeclaration = vertDec; // Begin effect drawing effect.Begin(); foreach (EffectPass pass in effect.CurrentTechnique.Passes) { pass.Begin(); graphics.DrawUserIndexedPrimitives ( PrimitiveType.TriangleList, quad.Vertices, 0, 4, quad.Indexes, 0, 2); pass.End(); } effect.End(); 我的效果也有这些属性: this.effect.TextureEnabled = true; this.effect.Texture […]

超级模糊纹理 – XNA

当我近距离观察纹理时,我似乎得到了非常模糊的纹理。 我正在创建一个类似Minecraft的地形,我希望纹理像素化 – 就像它是制作而不是XNA试图为我平滑它。 以下是它的显示方式: http : //s1100.photobucket.com/albums/g420/darestium/?action = view&current = bluryminecraftterrain.png 任何建议都会受到很多限制。

如何计算滚动条拇指的大小?

我正在为C#和XNA中的游戏制作自己的自定义UI系统,滚动条有一个小问题。 我不知道计算滚动条的拇指大小的公式是什么。 所以假设我有一个200×200像素的面板。 和600×600像素的图像。 如何根据图像大小计算滚动条的拇指大小?

在基于组件的游戏设计中共享字段

在使用XNA在C#中完成基于组件的游戏引擎之前,我认为这是最后一次大的逻辑飞跃。 我定义了我的Entity类和抽象组件。 我的问题出现在我的EntityFactory中。 当我想创建一个新实体时,我将一个EntityType枚举传递给工厂中的静态方法,并通过一个switch / case语句查找要组合在一起的组件。 问题是,我正在尝试创建一种方法,组件可以与同一实体中的其他组件共享字段,而无需访问所有内容。 例如,如果两个组件具有表示位置的Vector2字段,则它们都应指向相同的Vector2。 我可以通过初始化实体工厂中的所有字段并要求将它们传递到组件的构造函数(并使用ref作为基元)来做到这一点,但这将非常难以维护,因为任何时候我扩展或更改了组件,我将不得不在工厂中的每个使用组件的地方重写代码。 我真的想避免这个解决方案,但如果我找不到更好的方法,我会忍受它。 我目前的解决方案是创建一个名为Attribute的包装类。 它包含两个字段: private AttributeType type; private Object data; 属性类型是枚举,表示属性的用途。 所以在位置,旋转,纹理等枚举中有条目。 EntityFactory创建一个空的属性列表,并将其传递给每个组件构造函数。 setField方法将由组件的构造函数调用,而不是初始化字段。 这是Attribute类和setField方法。 public class Attribute { private AttributeType type; private Object data; public AttributeType Type { get { return this.type; } } public Object Data { get { return this.data; } } public Attribute(AttributeType […]

Visual Studio Intellisense没有显示某些类

我的Visual Studio没有显示IntelliSense自动完成中的许多可用类。 例如,我正在处理的项目引用了Microsoft.Xna.Framework命名空间,但即使在文件中使用Microsoft.Xna.Framework添加using语句,IntelliSense也无法识别像Texture2D和Rectangle这样的类。 但是,我仍然可以输入它们,而不会出现编译器错误。 知道发生了什么事吗? IntelliSense可检测System.Diagnostics等标准库,但不检测任何外部库。 它不是NameSpace冲突问题,因为IntelliSense中也缺少当前命名空间中的类。 我试过了: 重新启动Visual Studio(使用和不使用关闭选项卡) 删除%LocalAppData%\Microsoft\VisualStudio\14.0\ComponentCacheModel folder 重置导入和导出设置

XNA截图显示了Bloom之前,而不是最终渲染

我有一个使用Reach图形设置在C#XNA 4.0中编码的Windows平台游戏。 我的项目基于GameStateManagement示例,但后来我添加了Bloom和spriteSheet / spriteBatchfunction。 我希望保存最终屏幕输出的屏幕截图。 但是,当我保存我的截图时,它只显示Bloom应用之前和我的HUD文本显示之前的渲染(我在Bloom之后绘制)。 在这两个过程之后,我的Draw方法结束时保存了截图。 我尝试过各种各样的事情。 安德鲁的答案在这里拍摄XNA中的屏幕截图很有帮助并且保存了图像; 但是,它并没有保存最终渲染。 我有一种感觉它与绽放过程或spograbatch有关。 这是我的代码: example { public override void Draw(GameTime gameTime) { ScreenManager.GraphicsDevice.SetRenderTarget(sceneRenderTarget); // Clear the screen to black ScreenManager.GraphicsDevice.Clear(ClearOptions.Target, Color.Black, 0, 0); SpriteBatch spriteBatch = ScreenManager.SpriteBatch; spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend); // then i draw all my game stuff spriteBatch.End(); #region Post-Processing & Bloom ScreenManager.GraphicsDevice.SamplerStates[1] = SamplerState.LinearClamp; // […]

XNA可编辑文本字段

我知道如何在XNA中绘制文本,但我正在实现一个级别设计器,它将要求用户在UI中输入文本。 我在Google上遇到了一些小问题,但无法找到如何实现可编辑的文本字段。 框架中没有内置任何内容吗?

创建圆角矩形Texture2D

我正在构建一个带有对话框的游戏,我希望能够在程序上为这些盒子生成纹理,其风格与最终幻想系列非常相似(想想最终幻想VII )。 这是我到目前为止的代码片段: public class DialogBox { public Rectangle BoxArea { get; set; } public List BoxColors { get; set; } public List BorderColors { get; set; } public int BorderThickness { get; set; } public int BorderRadius { get; set; } private Texture2D texture; public void CreateBackdrop(ref GraphicsDevice graphics) { texture = new Texture2D(graphics, […]

我对Windows Phone 8上的2D游戏有哪些选择?

所以我一直在玩XNA,毕竟这一次,我终于制作了一款值得购买的游戏! 令我惊讶的是,我在MSDN上看到了这一点 : 面向Windows Phone OS 7.1的XNA Game Studio 4.0应用程序仍然受到完全支持,并继续在Windows Phone 8设备上运行。 •您可以继续开发和维护面向Windows Phone OS 7.1的新的或现有的XNA Framework应用程序。 •您无法将针对Windows Phone OS 7.1的现有XNA Framework应用程序升级到目标Windows Phone OS 8.0。 •您无法创建面向Windows Phone OS 8.0的新XNA Framework应用程序。 选择XNA Game Studio 4.0项目模板时,只能选择Windows Phone OS 7.1作为目标操作系统。 ?您可以在面向Windows Phone OS 8.0的应用程序中使用某些XNA Framework程序集。 您可以在面向Windows Phone OS 8.0的应用程序中引用和使用以下XNA Framework程序集。 在面向Windows Phone OS 8.0的应用程序中,您不能引用或使用不在此列表中的其他XNA Framework程序集。 •Microsoft.Xna.Framework.dll •Microsoft.Xna.Framework.GamerServices.dll •Microsoft.Xna.Framework.GamerServicesExtensions.dll […]

XNA – Pong Clone – 当它击中墙壁时reflection球?

我正在尝试在创建2D Pong Clone时让球从我的UI的顶部和底部“Walls”反弹。 这是我的Game.cs public void CheckBallPosition() { if (ball.Position.Y == 0 || ball.Position.Y >= graphics.PreferredBackBufferHeight) ball.Move(true); else ball.Move(false); if (ball.Position.X = graphics.PreferredBackBufferWidth) ball.Reset(); } 目前我在Ball.cs中使用它 public void Move(bool IsCollidingWithWall) { if (IsCollidingWithWall) { Vector2 normal = new Vector2(0, 1); Direction = Vector2.Reflect(Direction,normal); this.Position += Direction; Console.WriteLine(“WALL COLLISION”); } else this.Position += Direction; } 它工作,但我使用手动键入正常,我想知道如何计算屏幕顶部和底部的法线?