Questions tagged «c#»

C#是Microsoft与.NET平台一起创建的一种多范例,托管,强类型,垃圾回收的编程语言。

4
我的物理引擎中更新问题的动量和顺序
这个问题是我上一个问题的“后续”问题,涉及到碰撞检测和解决,您可以在这里找到。 如果您不想阅读上一个问题,这里是有关我的物理引擎如何工作的简短描述: 每个物理实体都存储在称为SSSPBody的类中。 仅支持AABB。 每个SSSPBody存储在一个名为SSSPWorld的类中,该类更新每个身体并处理重力。 每帧,SSSPWorld都会更新每个身体。 每个更新的实体都在空间哈希中查找附近的实体,检查是否需要检测与它们的碰撞。如果是,它们将调用“碰撞”事件并检查是否需要解决与其之间的冲突。如果是,他们将计算穿透矢量和方向重叠,然后更改其位置以解决穿透问题。 当一个物体与另一个物体碰撞时,只需将其速度设置为自己的速度即可将其速度传递给另一个物体。 如果从上一帧起未更改位置,则将物体的速度设置为0。如果它也与移动的物体(例如升降机或移动的平台)相撞,则会计算升降机的运动差,以查看物体是否尚未从其最后位置移动。 同样,当一个实体的所有AABB角与某帧中的某些内容重叠时,它会引发“压碎”事件。 这是我的游戏的完整源代码。它分为三个项目。SFMLStart是一个简单的库,用于处理实体的输入,绘制和更新。SFMLStartPhysics是最重要的类,其中SSSPBody和SSSPWorld类位于其中。PlatformerPhysicsTest是游戏项目,包含所有游戏逻辑。 而这是在SSSPBody类,评论和简化了“更新”的方法。如果您不想看整个SFMLStartSimplePhysics项目,则只能看一下。(即使这样做,您也应该看看它,因为它已被注释。) .gif显示两个问题。 如果将实体放置在不同的顺序中,则会发生不同的结果。左侧的板条箱与右侧的板条箱相同,只是以相反的顺序放置(在编辑器中)。 两个板条箱都应朝屏幕顶部推进。在左边的情况下,没有箱子被推进。在右边,只有其中之一是。两种情况都是意外的。 第一个问题:更新顺序 这很容易理解。在左侧的情况下,最上面的板条箱先于另一个板条箱被更新。即使底部的板条箱将速度“传递”到另一个板条,它也需要等待下一帧移动。由于它没有移动,因此底部木箱的速度设置为0。 我不知道如何解决此问题。我希望解决方案不依赖于“排序”更新列表,因为我觉得我在整个物理引擎设计中做错了什么。 主要的物理引擎(Box2D,Bullet,花栗鼠)如何处理更新顺序? 第二个问题:只有一个板条箱被推向天花板 我还不明白为什么会这样。“弹簧”实体的作用是将物体的速度设置为-4000,然后将其重新放置在弹簧本身的顶部。即使禁用重新定位代码,该问题仍然会发生。 我的想法是,当底部板条箱与顶部板条箱发生碰撞时,其速度设置为0。我不确定为什么会这样。 尽管有机会看起来像放弃第一个问题的人,但我在上面发布了整个项目的源代码。我没有任何东西可以证明这一点,但是相信我,我努力解决了这个问题,但是我找不到解决方案,并且我以前没有任何物理和碰撞方面的经验。我一直在努力解决这两个问题超过一个星期,现在我很绝望。 我认为如果不从游戏中剥离许多功能(例如,速度传递和弹簧),就无法找到解决方案。 非常感谢您花时间阅读此问题,如果您甚至想提出解决方案或建议,也要多谢。

5
C#是否适用于实时游戏服务器?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 5年前关闭。 大部分问题都在标题中。 基本上,我将开始开发2D多人动作游戏。客户端(可能)将使用XNA,我想在这里问一下使用C#进行服务器端开发是否是一个好主意。 我想管理语言是没有问题的,因为Java甚至在MMO游戏服务器中都在使用Java(如果我错了,请纠正我),那么出于这个目的有什么理由避免使用C#?我需要它快速且响应迅速,通过TCP进行通信,与SQL Server聊天。并且如果没有理由避免使用C#,我将如何部署这样的Web服务器,它将是在服务器计算机上运行的.NET EXE吗?
22 c#  server 


4
创建岛屿地图蒙版的简单方法
我正在寻找一种使用C#为岛地图生成蒙版的好方法。 基本上,我使用的是由Perlin噪声生成的随机高度图,其中地形没有被水包围。 下一步将是生成遮罩,以确保拐角和边界都是水。 然后,我可以从Perlin噪声图像中减去蒙版以获得一个孤岛。 并在对比中玩。 和渐变曲线,就可以得到一个孤岛高度图。 (这些只是示例) 如您所见,岛上的“边缘”刚刚被切除,如果颜色值不是太白,这并不是一个大问题,因为我将灰度分为4层(水,沙子,草皮和岩)。 我的问题是,如何像第二幅图像那样生成一个好看的蒙版? 更新 我已经找到了这项技术,这对我来说似乎是一个不错的起点,但是我不确定我可以如何正确地实现它以获取所需的输出。 http://mrl.nyu.edu/~perlin/experiments/puff/ 更新2 这是我的最终解决方案。 我已经makeMask()在规范化循环中实现了该功能,如下所示: //normalisation for( int i = 0; i < width; i++ ) { for( int j = 0; j < height; j++ ) { perlinNoise[ i ][ j ] /= totalAmplitude; perlinNoise[ i ][ j ] …

2
如何根据对象是什么设计上下文菜单?
我正在寻找“右键单击选项”行为的解决方案。 基本上,当右键单击游戏时,游戏中的所有项目都可以根据对象的不同显示一组选项。 右键单击不同情况的示例: 库存:头盔显示选项(装备,用途,掉落,描述) 银行:头盔显示选项(Take 1,Take X,Take All,Description) 楼层:头盔显示选项(“乘车”,“在这里行走”,“描述”) 显然,每个选项都以某种方式指向执行所说内容的特定方法。这是我要解决的问题的一部分。对于单个项目有这么多的潜在选项,我如何以不至于太混乱的方式设计班级? 我曾考虑过继承,但是这可能会很漫长,而且链条可能很大。 我已经考虑过使用接口,但这可能会限制我一点,因为我无法从Xml文件加载项目数据并将其放入通用的“ Item”类中。 我将期望的最终结果基于一个名为Runescape的游戏。可以在游戏中右键单击每个对象,并根据其位置以及位置(存货,楼层,银行等)显示不同的选项集,供玩家进行交互。 我将如何实现这一目标?首先,我应该采用哪种方法,决定应该显示哪些选项,单击后如何调用相应的方法。 我正在使用C#和Unity3D,但是提供的任何示例都不必与它们中的任何一个相关,因为我追求的是与实际代码相反的模式。 非常感谢您的帮助,如果我在问题或期望的结果中不清楚,请发表评论,我会尽快解决。 到目前为止,这是我尝试过的: 实际上,我已经设法实现了一个通用的“ Item”类,其中包含了不同类型项目的所有值(额外攻击,额外防御,成本等)。这些变量由Xml文件中的数据填充。 我曾考虑过将每个可能的交互方法都放置在Item类中,但是我认为这是令人难以置信的混乱且糟糕的形式。我可能仅通过使用一个类而不将其子类化为不同的项目而采用了错误的方法来实现这种系统,但这是我可以从Xml加载数据并将其存储在类中的唯一方法。 我之所以选择从Xml文件中加载我的所有物品,是因为该游戏可以容纳40,000多个物品。如果我的数学正确,则每个项目的班级很多。

2
使整个场景淡入灰度
当玩家失去一生时,我希望整个游戏屏幕变为灰度,而不是立即停止更新。我也希望它逐渐变灰而不是突然失去所有颜色。到目前为止,我发现的所有内容都是关于截屏并将其设为灰度,或将特定的纹理设为灰度。有没有一种方法可以将整个运动场和其中的所有对象更改为灰度,而无需遍历所有内容?
20 xna  c# 

2
大气伪影对大气的散射
我正在实现行星从太空的大气散射。我一直使用http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter16.html中的Sean O'Neil的着色器作为起点。 除了SkyFromSpace着色器与GroundFromSpace着色器不同之外,我与fCameraAngle有几乎相同的问题,如下所示:http ://www.gamedev.net/topic/621187-sean-oneils-atmospheric-scattering/ 当不在fCameraAngle = 1内部循环中使用时,我从太空着色器中获得了天空的奇异伪像。这些伪影的原因是什么?当fCameraAngle限制为1时,伪像消失。我似乎也缺少O'Neil沙箱(http://sponeil.net/downloads.htm)中的色相。 相机位置X = 0,Y = 0,Z = 500。左侧为GroundFromSpace,右侧为SkyFromSpace。 相机位置X = 500,Y = 500,Z = 500。左侧为GroundFromSpace,右侧为SkyFromSpace。 我发现,根据来源,相机角度似乎处理起来非常不同: 在原始着色器中,SkyFromSpaceShader中的摄影机角度计算为: float fCameraAngle = dot(v3Ray, v3SamplePoint) / fHeight; 而在空间着色器的地面中,摄影机角度的计算公式为: float fCameraAngle = dot(-v3Ray, v3Pos) / length(v3Pos); 但是,在线上的各种消息来源都在修补射线。为什么是这样? 这是一个C#Windows.Forms项目,该项目演示了该问题,并且我已使用该项目来生成图像:https : //github.com/ollipekka/AtmosphericScatteringTest/ 更新:我从O'Neil站点上的ScatterCPU项目中发现,当摄影机位于阴影点上方时,摄影机射线被否定,以便计算从点到摄影机的散射。 更改射线方向的确确实消除了伪影,但引入了其他问题,如下所示: 此外,在ScatterCPU项目中,O'Neil可以防止光线的光学深度小于零的情况: float fLightDepth = Scale(fLightAngle, fScaleDepth); …

6
对话框树如何工作?
也就是说,当子对话结束时,什么与语音之间的联系以及如何在语音之间移动? 如果您有C#中基本对话框树的任何示例,请发布它们。
20 c#  dialog-tree 

7
编写2D游戏的最简单,最有趣的方式?闪?XNA?其他引擎?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 这是一篇详细介绍我的搜索的文章,其中介绍了我对爱好者游戏程序员最有趣的搜索方式,以利用自己的空闲时间来制作游戏。 我的要求: 我首先看过Flash,做了一些小型游戏,但对性能感到怀疑。我想制作一个相当大的策略游戏,其中有数百个单位同时战斗,其中包括爆炸和动画。也可缩放地图。我看到Adobe为Flash提供了一个新的3D API,但是我不知道这是否还能提高2D性能,我在他们的MAX10会议上找不到与该问题有关的任何内容。您是否说Flash是轻松制作大型2D游戏的好技术?我真的很喜欢Actionscript,而且我喜欢Flash中的一切都非常容易。有几种可用的引擎,使其变得更加容易。 我只是为了好玩而已,如果有合适的动画/粒子编辑器可用,并且如果我要使用的引擎可以在多个平台上使用,那就更好了。(这样一来,更多的人就可以玩我的游戏了)。我也想在许多移动平台上使用它。(因为某些原因,我喜欢触摸输入) 我确实很了解XNA框架,但是没有适用于它的好的引擎,它只能在Windows上运行,这是一个很大的限制。更大的是,每次要将游戏分发给某人时,您都需要安装XNA可再发行组件。如果使用XNA,则必须自己制作所有工具,并且可能必须使用WPF制作它们。(我很想使用Adobe AIR制作工具,但是不幸的是,Flash中的图像处理等API比XNA / WPF中的API要差得多。)现在,我知道我可以自己制作引擎了支持每个平台,但坦率地说,通过API进行大量的工作。毕竟,我想做一个游戏,而不是引擎。 因此,问题就变成了:是否可能有一个可用于2D开发的跨平台(免费或免费开发?)引擎? 我更喜欢:C#,Actionscript。如果工具集高于平均水平,我不介意使用c ++,但我高度怀疑是否存在类似的东西。请证明我错了:)总结:我想使用Flash,但是我不知道它的扩展性是否足够好。我不是脚本编写者,我想要一些可以在适当的IDE中使用的真实API。 仅作为参考,我研究了几种选择,实际上我已经寻找了很长时间。您最终会帮助我做出很多决定。 从功能上讲Flatredball引擎将是理想的选择。但是我尝试了他们的工具,坦率地说,它们太可怕了。绝对无法使用,我需要确定自己做。我没有看过他们的API,但是如果他们的工具太差了,我就不会再去研究了。 Unity3D。这很不错,但是我真的不需要3D,而且这是很多……需要学习的工作。我也不喜欢在不同平台上使用它是如此昂贵,并且只能通过脚本编写代码。您必须分别购买每个平台。编辑器的可用性是中等的,产品的整体性能足以满足大多数目的,但是我自己学习它可能会过头。 Shiva 3D。看起来足够好,但是再说一遍:我真的不需要3D。在我看来,编辑器的可用性比Unity3D差一点,而且我不清楚如何开始编程。我认为它需要C ++进行编码,所以这也是负面的。我想玩得开心,而C#很有趣;) SDL。坦率地说,我仍然需要移植到所有这些不同的SDL实现。而且我不喜欢OpenGL风格的编程,这太丑陋了。它需要c ++,我知道可能有一些包装器,但是我不喜欢使用包装器,因为... 违规。有很多功能,但支持似乎很少,而且针对发烧友。C#绑定被反复删除。我不是引擎迷,我只是想做一个游戏。我认为Irrlicht不会发生这种情况。 Ogre3D。工作太多了,它只是一个图形引擎。也没有多平台支持和c ++。 Torque2D。使用会花费一些钱,而且我没有听到很多关于支持和文档的好东西。每个平台还需要额外付费。
20 c#  2d  actionscript-3 

11
XNA开发教程[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 3年前关闭。 有人可以指导我从哪里获得使用XNA框架进行开发的基本入门教程?
20 c#  xna 

7
XNA有哪些已知的2D / 3D物理引擎?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我正在寻找要在XNA项目(2D或3D)中使用的物理引擎。因为它用于XNA,所以需要满足一些要求: 不一定免费,但是接近它显然是首选 仅托管代码(否则将无法在360上运行) 对于3D,我知道-BulletX(它可以工作,并且我现在正在使用它,但是它不活跃并且可以使用更多工作) 对于2D我知道-Farseer
20 c#  xna  physics-engine 

2
在游戏中获得C ++工作经验的最佳方法(来自C#)[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我是一名软件开发人员,具有C#(五年经验)以及其他几种语言的经验。 我的“梦想工作”是作为开发人员从事视频游戏。 大多数工作都需要C ++的知识,而我目前还不了解(一些基本知识除外)。 我环顾四周,大多数大型游戏公司都需要3-5年的C ++经验。 我的问题是-通过C#,什么是让自己达到所需的经验水平的好方法? 我想到了一些可行的方法: 从书籍中获得有关C ++的更多知识。参加以C ++编写的开源项目。学习C ++并拥有C级工作经验的最佳方法是什么,特别是对于游戏行业而言?


5
计算圆(图像)内的随机点(像素)
我有一个图像,该图像在特定位置包含一个圆,并具有特定的直径。我需要做的是能够计算圆内的随机点,然后操纵与这些点相关的像素。我已经有以下代码: private Point CalculatePoint() { var angle = _random.NextDouble() * ( Math.PI * 2 ); var x = _originX + ( _radius * Math.Cos( angle ) ); var y = _originY + ( _radius * Math.Sin( angle ) ); return new Point( ( int )x, ( int )y ); } …
19 c#  algorithm 

2
“您要实例化的对象为空”但是它可以工作,我可以忽略该错误吗?
这从来没有发生在我身上,所以我有点困惑。 GameObject someObject = Instantiate (Resources.Load ("Prefabs/Items/" + someName)) as GameObject; 这将引发错误,但实际上已实例化该对象,并且一切都按预期工作。无论我重现此错误几次,该错误都不会停止程序。 我可以忽略此错误,还是没有看到一些问题?
18 unity  c# 

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.