Questions tagged «xna-4.0»

XNA Game Studio 4.0是一种编程环境,允许您使用Visual Studio为Windows Phone,Xbox 360控制台和基于Windows的计算机创建游戏。


8
他们是如何做到的:Terraria中的数百万块瓷砖
我一直在开发类似于Terraria的游戏引擎,这主要是一个挑战,尽管我已经弄清了其中的大部分内容,但我似乎并没有真正为它们如何处理数百万个可交互/可收割的图块而费心游戏一次完成。在我的引擎中,创建约500.000个图块,这是Terraria可能生成的图块的1/20,导致帧速率从60下降到约20,即使我仍然只在视图中渲染图块。请注意,我没有对磁贴做任何事情,只是将其保留在内存中。 更新:添加代码以显示我的操作方式。 这是类的一部分,它处理并绘制图块。我猜想罪魁祸首是“ foreach”部分,该部分会迭代所有内容,甚至是空索引。 ... public void Draw(SpriteBatch spriteBatch, GameTime gameTime) { foreach (Tile tile in this.Tiles) { if (tile != null) { if (tile.Position.X < -this.Offset.X + 32) continue; if (tile.Position.X > -this.Offset.X + 1024 - 48) continue; if (tile.Position.Y < -this.Offset.Y + 32) continue; if (tile.Position.Y > -this.Offset.Y …


4
XNA 3.1和4.0之间有什么区别?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我已经离开XNA几个月了,想重新加入它。我有一个当前正在开发的游戏,但是它是在XNA 3.1中完成的。两者之间有什么区别,值得更新吗?
17 xna  c#  xna-4.0 

2
新的XNA 4.0游戏项目出现错误-找不到合适的显卡
有想法该怎么解决这个吗?根据我对XNA 3的记忆,是从头开始运行该应用程序时,我会得到一个蓝色的窗口,没有渲染任何内容。 有什么建议么? 编辑! 我右键单击该项目并选择“属性”,然后将“游戏配置文件”从“ 使用HiDef”更改为“ 使用覆盖率”。现在,熟悉的蓝色调窗口将按预期显示。 如果选择有限的API,我会失去什么?为什么还要选择它才能起作用?
16 xna  xna-4.0 


3
在2D空间游戏中伪造等距图形
首先,我确切地知道我的绘图问题是什么,并且对于如何解决该问题我有各种想法。我在这里要弄清楚如何调整绘制的帧,以便保持等距的“幻觉”。 我正在编写在太空中进行的2D鸟瞰游戏。我试图在Up是北方的世界中使用等轴测图形,而游戏世界不会像传统的等轴测游戏那样旋转(请记住,游戏是在太空中进行的,没有地形)。这是我尝试使用的一个示例精灵:http : //cell.stat-life.com/images/stories/AsteroidOutpost/Spaceship64.png围绕其自身的垂直轴旋转了64次,视角为35度(又名iso)。图像已生成,因此可以更改。 为了清楚起见,我已指定北(上)为0度,东(右)为90度。 我的问题是,由于所使用的3D平面存在差异,我的精灵并不总是看起来像面对游戏一样。不知道我是否正确使用了术语,但是我的飞船是在一个平面上旋转的,而查看平面期望事物在其自身的平面上旋转。这是问题的描述: http://cell.stat-life.com/images/stories/AsteroidOutpost/ProjectionIssue.png 左边是侧视图,右边是自顶向下的视图。在顶部,我可以看到太空飞船/精灵表的世界。在底部,我具有将精灵绘制到屏幕上时的外观。 右上角是我的飞船如何旋转的简化版本(每帧之间的角度间隔均匀)。右下角是在屏幕上绘制特定角度时,精灵看起来像面对的角度。该问题在45度左右最为明显。这是一张覆盖有“屏幕平面”线的图像,该线指向该船应该面对的方向:http : //cell.stat-life.com/images/stories/AsteroidOutpost/Spaceship64RedLine.png红线应始终指向与船完全相同的方向,但是如您所见,投影问题正在引起问题。我希望我已经很好地描述了这个问题。 编辑: 红线在屏幕平面上旋转,而太空飞船在“船平面”上旋转,因此绘制时船角和屏幕角度之间存在较大差异。 结束编辑 当这艘船向应该向前方射击的一侧偏离目标的位置发射激光束时,看起来很奇怪。 所以...我想出的解决方案是: 停止尝试伪造等轴测图,变大或回家。已经旋转了我的世界。(PS:这可以解决我的问题,对吗?) 更改我的Sprite表(以某种方式),使其具有表示模型将被查看的“屏幕角度”的框架。因此,当我要求提供45度的图像时,它实际上看起来像是在屏幕上面对45度。 更改我的Sprite渲染系统以从Sprite工作表中抓取一个不同的帧(以某种方式),因为知道抓取“正常”帧看起来会很有趣。因此,与其抓取45度的框架,不如抓取33度的框架(只是猜测),使它对用户而言看起来是正确的。 只需使用3D!真是太容易了 例如:您会推荐哪种解决方案?我倾向于2,即使我知道这是错误的。请记住,我有权使用Sprite生成工具。方法3是我的第二选择。这两种方法都只需要我对角度应用一些数学运算即可得到所需的结果。顺便说一句,我在其中添加了#4作为玩笑,我不想转向3D。 对于两个:使用方法2或方法3,如何调整输入或输出角度?我对3D投影和3D矩阵(更不用说2D矩阵)以及任何其他数学方法可以达到我想要的结果都不太满意。 在这里大声思考:如果我将一个单位矢量面向我要看的船的方向(在屏幕平面上),然后将其投影到船平面上,然后找出那条投影线与飞机平面之间的夹角北方是,我应该具有要显示的船舶图形的角度。对?(#3的解决方案?)伙计...我无法解决。 编辑: 我知道这个问题是很难用静态图像可视化,所以我遵守我的雪碧库Visual测试仪显示的问题:http://cell.stat-life.com/downloads/SpriteLibVisualTest.zip它需要XNA 4.0此应用程序只需旋转精灵,然后从其中心向外以游戏认为船应面对的角度画一条线。 编辑9月8日 继续我的“大声思考”段落:我认为我可以采用朝北的单位矢量(0x,1y,0z),而不是使用投影(因为它看起来很难),而是使用矩阵将其旋转到角度精灵实际上是面向的,然后围绕X轴再次从“查看平面”向外旋转到“精灵平面”,然后……变平?仅使用X和Y(忽略Z),向量(基本上是将其投影)回到视平面上。然后,使用新的扁平化矢量,我可以确定其角度并将其用于...某物。我待会再考虑。 编辑9月8日(2) 我尝试从上面遵循我的想法,并取得了一些成功,是的!所以...为了使一条红线看起来像是从我的飞船中出来(仅出于测试目的),我做了以下工作: Vector3 vect = new Vector3(0, 1, 0); vect = Vector3.Transform(vect, Matrix.CreateRotationZ(rotation)); vect = Vector3.Transform(vect, Matrix.CreateRotationY((float)((Math.PI / 2) - MathHelper.ToRadians(AngleFromHorizon)))); Vector2 …

2
在2D XNA游戏中创建电/照明/特斯拉线圈效果?
我想在两点之间创建与该视频非常相似的电束:http : //www.youtube.com/watch?v=eMJ8-56L3Lc。效果是如此动态,各点之间的长度和伪随机运动各不相同,以至于我难以想象如何完成这样的事情。是否有任何有用的信息可以指导我正确的方向? 我应该注意,我使用的是XNA 4.0 Reach配置文件,但是自定义着色器还可以,因为我的目标不是Windows Phone。

1
如何创建渐变的战争迷雾?
我正在出于教育目的创建自上而下的2D RTS游戏。目前,我真的只是在复制Starcraft的设计/想法。我已经决定也应该实施《战争迷雾》。 我的期望: 当前探查的区域(有单位)应照亮。 地区previsouly探索(单位是有)应为黑暗的,但显示什么东西都没有,当你单位在那里。 未探索的区域(您单位从未去过的区域)应完全为黑色。 每种类型都应该有一个梯度变化(例如,已探究到先前探究),请参见下图。 只是粗略的细节:我将如何做?
14 2d  xna-4.0  rts  fog-of-war 

3
为什么我的瓷砖之间有线条?
我正在制作自上而下的XNA游戏。地图是由图块创建的。我最近注意到的一个问题是磁贴之间的线条“网格”。它仅在某些时候出现,并且仅取决于相机的位置。我让XNA处理定位,为什么这些行显示出来? 这是带有线条的图片: 但是,将相机稍微移动一点之后,它神奇地回到了应该出现的样子: 谢谢你的帮助! 编辑: 对于源代码,这是我能做的最好的事情,这是一个非常大的项目,并且在多个区域进行渲染: 主渲染循环 对于诸如图块之类的动态元素: spriteBatch.Begin(SpriteSortMode.Deferred, Nothing, SamplerState.LinearClamp, Nothing, Nothing, Nothing, Matrix.CreateTranslation(CameraX, CameraY, 0)) Mode.Render(spriteBatch, False) For Each j As [Delegate] In DynamicInjectionList j.DynamicInvoke(spriteBatch) Next DynamicInjectionList.Clear() spriteBatch.End() Mode.Render: For x As Integer = 0 To GRIDMAX - 1 For y As Integer = 0 To GRIDMAX - …

1
如何使用XNA / Blender将设备添加到3D角色模型中?
我看了很多Blender教程,但是我还没有看到如何交换子模型的示例。所以我的问题是,如何在角色模型上交换设备?具体来说,我希望能够动态添加/交换XNA中角色模型所拥有的衣服和物品。理想情况下,这些项目将遵循角色模型的骨骼结构。 例如; 从XNA中的裸露角色开始,我希望角色可以握住斧头并佩戴跟随角色动画的锁子甲。我还希望能够在游戏过程中的任何时候切换此设备以获取剑道和板甲邮件。我宁愿不为每种设备组合创建模型。有什么方法可以将一个模型的骨骼(例如剑骨)和网格添加到另一模型骨骼(例如右手骨骼)? 谢谢…
14 xna-4.0  blender 

2
播放歌曲,导致WP7在手机上崩溃,但在模拟器上不崩溃
我正在尝试在开始播放的游戏中实现歌曲,并通过XNA 4.0在Windows Phone 7上不断循环播放。在模拟器上,这可以正常工作,但是当部署到手机上时,它只是在返回主屏幕之前仅显示黑屏。这是有问题的恶意代码,将其注释掉可使该应用在手机上正常运行: // in the constructor fields private Song song; // in the LoadContent() method song = Content.Load<Song>("song"); // in the Update() method if (MediaPlayer.GameHasControl && MediaPlayer.State != MediaState.Playing) { MediaPlayer.Play(song); } 歌曲文件本身是2:53长的2.28mb .wma文件,比特率为106kbps。 再次,这在模拟器上完美运行,但根本不在手机上运行。感谢您的任何帮助,您可以提供!

1
仅在XNA中分配某些资源?
XNA 4.0中的ContentManager只有一个Unload()方法可以卸载所有资产。 我想拥有一些始终被加载的“全局”资产,但是随后我希望在更改级别时应该卸载的每级资产。 我是否应该创建第二个ContentManager实例作为Level.cs类的一部分?还是我应该使用Game.Content然后调用.Dispose在加载的资产上?还是我应该在这里概述的ReadAsset函数之上创建自己的ContentManager ?
13 xna  xna-4.0 

5
基于Tile的2D平台平台中的45°坡度
我想在基于图块的平台游戏中使用简单的45°坡度,但是我似乎无法将算法推倒。请看一下代码和视频,也许我错过了明显的地方? //collisionRectangle is the collision rectangle of the player with //origin at the top left and width and height //wantedPosition is the new position the player will be set to. //this is determined elsewhere by checking the bottom center point of the players rect if(_leftSlope || _rightSlope) { //Test bottom …
12 xna  c#  xna-4.0  platformer 

2
有关XNA游戏架构的问题
因此,我终于开始玩XNA了,并一直在制作2D游戏(我从iOS上开发它的朋友那里得到了很多美术资产) 许多事情似乎很容易做到,而且开箱即用,但是由于大多数文献(例如,我买的书)对2D的关注都不多,所以我一头雾水。 对于以下问题的任何澄清或指向更多信息,我将不胜感激: 游戏服务的意义是什么?我了解将对象注册为服务的全部习惯,以便任何其他GameComponent都可以抢占它,但是如何击败这个问题却仅仅是使其成为公共的还是静态的?例如,我的书建议在Game.cs类中注册SpriteBatch对象。我不确定将其简单地设置为公共/静态是多么可取,因为无论如何应该只存在一个Game实例(单个)? 我对何时应该从GameComponent或RenderableGameComponent继承感到困惑。我正在尝试遵循管理器/控制器的设计,以便所有实体都由一个管理器创建/拥有,其他事物也一样。我目前有每个Manager / Controller都继承自GameComponent,但是如何让Game对象拥有所有Manager并手动调用它们的更新并绘制呢? 我注意到初始化是在 ContentLoad()之前调用的,我发现这很烦人,因为在我的Initialize中我想创建一些实体(即Sprite,Player等),但是我无法为其加载它们由于尚未调用SpriteSheets或Textures,因此尚未进行调用。我可能是初始化不正确,还是人们只是在ContentLoad中进一步分配纹理? 那些似乎是我最大的“ WTF ”,不是很了解

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.