Questions tagged «mathematics»

数学问题涉及游戏开发中使用的算术,几何,微积分,公式和其他计算。

10
在Pong中,当球从球拍反弹时,如何计算球的方向?
我正在努力解决游戏开发中的这个Hello World-y问题。我已经在XNA中创建了一个TicTacToe游戏,所以我想下一步将是Breakout克隆。 请记住,我没有在游戏编程甚至什么数学,我应该适用于那些知识。这就是为什么我问这个问题。 问题:如何确定球击中屏幕底部的桨时应该反弹的位置? 我以为会是这样的: 捕获传入球的速度和角度。 检测它触摸条的位置(最左边,最右边,中间),并据此使其在触摸外部区域时具有更高的速度。 这就是我卡住的地方。呵呵。 有什么见解吗?我意识到这不是一个简单的答案类型问题,但是我确信这是每个​​人在某个时候都面临的问题。 我正在阅读该网站上推荐的《线性代数》一书,但我仍然不知道是否应该在这里应用它。
28 xna  c#  2d  mathematics  physics 

7
连续加权随机分布,偏向一端
我目前正在为我们的游戏的粒子系统做出贡献,并开发了一些发射器形状。 我沿直线或矩形区域的均匀随机分布效果很好-没问题。 但是现在,我希望在这种分布中具有一维梯度。例如,这意味着较低的值比较高的值更常见。 我不知道什么数学术语可以解决这个问题,因此我的搜索技能对这个问题毫无用处。我需要一些计算简单的东西,因为粒子系统需要高效。

8
如何防止小的数字优势主导相遇的平衡?
我一直在玩游戏,并且在某些事情上遇到了很多麻烦: 我有两个字符,每个字符都有一个属性(大约10个),范围在1到20之间。我想使用这些属性来生成“掷骰”,以使较高的掷骰赢得该特定的遭遇。值得注意的是,两个字符不是互相损害/防御。他们俩都在滚动查看他们是否通过了我认为可以称为技能检查的内容。他们都在为一个共同的价值通过/失败。他们不会互相影响。 但是,当其中一个字符的数值优势很小时,我想出的任何公式都可以使优胜劣汰的字符在绝大多数时间内获胜。这是不希望的。 我尝试将测试的“最相关”属性的权重设置为80%,将其他属性的权重设置为20%。我还尝试比较平均值以产生相对差异,并使用该差异来增强较弱的性格。两种方法都带来了我要消除的显着优势(例如,如果我将遭遇5000次,则经常会在一侧赢得全部5,000次胜利)。 看起来,添加“运气”组件仅是重要的,如果以某种方式加权了它以偏爱较小的角色,并且我在那里还没有达到一个好的平衡。 我可以采取什么方法来钝化小的数值优势的影响,但是当属性的相对差距增加时仍然保留并增加该优势? 根据要求,以下是我到目前为止的详细信息。有些事情我还没有弄清楚,所以它们仍然是概括性的: 目前,该滚动生成为 0.8 * (mainAttribute) + 0.2 (1/3 * subAttA + 1/3 * subAttB * 1/3 subAttC) 目前,这将产生4.0附近的数字。属性是在指定范围之间随机生成的。当前的测试使用一个字符,其属性从2到4,对手在3到5之间。可以预见,这将分别产生接近3和4的平均值。 凭借这一单点优势,我希望看到55%到60%的时间里两次获胜者中的优势者,这种优势将扩大到大约80%的时间,而平均属性优势为5或6,在7或8的优势下为90%,当差距越来越大时,留下了一些不太可能获胜的空间。我不希望再也不能保证有胜利,但是也许事情变得不太可能了-当差距变得非常大时,赢得99.5%或99.6%的声音。 当前公式产生一个非随机数。随机性来自对哪些属性相关的选择。不是全部每个卷都使用属性。一个总体上较弱的人有可能在与该掷骰相关的领域中更强,并赢得胜利。但是,可以预见的是,这种情况很少发生。 我的下一个尝试是权衡它们的相对优势,方法是取每个人的所有属性的平均值,将它们彼此相除,然后使用该值对次要角色有所帮助。这样可以使情况稍微好一些,但是仍然有明显的趋势,在5,000次尝试中,一个人可以赢得5,000次胜利。

12
比较角度并找出差异
我想比较角度并了解它们之间的距离。对于此应用程序,我正在以度数工作,但它也适用于弧度和梯度。角度的问题在于它们取决于模运算,即0-360度。 假设一个角度为15度,一个角度为45度。相差30度,并且45度角度大于15度的角度。 但是,当您有345度和30度时,这种情况就会分解。尽管它们可以正确比较,但是它们之间的差异是315度,而不是正确的45度。 我该如何解决?我可以编写算法代码: if(angle1 > angle2) delta_theta = 360 - angle2 - angle1; else delta_theta = angle2 - angle1; 但是我更喜欢一个避免比较/分支的解决方案,并且完全依靠算术。

3
团队如何防止覆盖源文件中的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 在我看来,有一种可能性,例如由多个人同时处理游戏引擎时,如何防止覆盖? 假设开发者一在工作,Audio.cpp而开发者二也在工作Audio.cpp,这在大型团队中通常如何进行管理以应对覆盖?(换句话说,要阻止开发人员2打开文件,直到开发人员1完成)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 



3
图形卡将向量的第四个元素作为最终位置怎么办?
从这个问题看来,您将需要一个四元素位置矢量,因为使用矩阵乘法修改其位置更简单。 就其本身而言,这意味着在将第四个元素视为3D点的表示时(假设不进行变换)应该简单地忽略它,但是我知道这是不正确的,因为当我将vector4提供给GPU时,如果第四个元素元素不是一个,它不会呈现-为什么? 栅格化器中的第四个元素有什么意义? 编辑:经审查,这个问题措辞不佳;第二段更准确地说:“如果第四个元素的值不在某个范围内,则不会'正确'/'按预期'呈现。”

3
如何在循环的值(例如色相或旋转)之间保持平衡?
观看演示 我试图使关节围绕画布的中心顺着鼠标指针的角度平滑旋转。我所拥有的作品有效,但我希望它能够动画化尽可能短的距离,以达到鼠标角度。当值在水平线(3.14和-3.14)处循环时,会发生问题。将鼠标悬停在该区域上,即可查看方向的切换方式,并且需要很长的路程。 相关代码 // ease the current angle to the target angle joint.angle += ( joint.targetAngle - joint.angle ) * 0.1; // get angle from joint to mouse var dx = e.clientX - joint.x, dy = e.clientY - joint.y; joint.targetAngle = Math.atan2( dy, dx ); 如何使它旋转最短的距离,甚至“跨越间隙”?

3
有更快的正弦功能吗?
我正在研究3D Perlin噪声。C#数学库似乎对我需要的东西来说是过高的,因为它的大多数功能都使用双精度。我在多个地方使用Math.Sin()来产生噪声。有谁知道更快的正弦函数?
25 xna  c#  mathematics 

5
如何在2D平铺游戏中快速计算视野?
我有一个图块矩阵,在某些图块上有对象。我想计算哪些图块对播放器可见,而哪些则不可见,所以我需要非常有效地做到这一点(因此即使我有一个大矩阵(100x100)和很多对象,它也可以足够快地进行计算)。 我尝试使用Bresenham的line算法来做到这一点,但是速度很慢。另外,它给了我一些错误: ----XXX- ----X**- ----XXX- -@------ -@------ -@------ ----XXX- ----X**- ----XXX- (raw version) (Besenham) (correct, since tunnel walls are still visible at distance) (@ is the player, X is obstacle, * is invisible, - is visible) 我敢肯定这是可以做到的-毕竟,我们有NetHack,Zangband,他们都以某种方式解决了这个问题:) 您可以为此推荐什么算法? 对于我的需求,我将定义可见这样的:瓷砖是可见的,当在瓷砖的至少一部分(例如角落)可以连接到播放器瓷砖的中心用一条直线,其不相交任何的障碍。


7
如何以圆周运动拦截对象
我正在创建2D太空游戏,需要使飞船拦截一颗行星。我有用于直线截距的工作代码,但无法弄清楚如何计算圆形轨道上的行星位置。 该游戏在科学上不够准确,因此我不必担心惯性,重力,椭圆轨道等。 我知道太空飞船的位置和速度,也知道行星的轨道(半径)和速度

6
如何优化距离功能?
在开发一款相当简单的类似RTS的游戏时,我注意到我的距离计算正在影响性能。 在任何时候,都会进行距离检查,以了解一个单位是否在其目标范围内,射弹是否已达到其目标,玩家是否跑过了皮卡,常规碰撞等。列表继续进行,并检查两点之间的距离经常使用。 我的问题就是这个。我想知道除了常规的sqrt(x * x + y * y)方法以外,游戏开发人员还有哪些替代方法可以检查距离,如果我们每帧执行数千次,这将非常耗时。 我想指出的是,我了解了曼哈顿的距离和平方的距离比较(通过跳过sqrt瓶颈)。还要别的吗?

4
贝塞尔曲线弧长
另请参阅: 关于Math.SE的相同问题 如何找到贝塞尔曲线的弧长?例如,线性贝塞尔曲线的长度为: length = sqrt(pow(x[1] - x[0], 2) + pow(y[1] - y[0], 2)); 但是,二次,三次或n度贝塞尔曲线呢? (我的目标是事先估计采样分辨率,因此,我不必浪费时间检查下一个点是否在触摸上一个点。)

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.