Questions tagged «physics»

与物体在空间和时间上的运动有关。包括诸如加速度(推力和重力),质量,碰撞响应,摩擦等概念。

2
如何使角色能够在墙上行走?
我正在尝试使角色像蜘蛛一样移动:鉴于上升的坡度(通常情况下,球将无法滚动),蜘蛛会慢慢爬上去。 类似地,在给定一个空中矩形平台的情况下,蜘蛛会继续前进,而不是在到达边缘时掉落,而是继续包裹在边缘上,并继续沿平台的侧面和下方向下移动(最终绕平台的外围行走)。 我研究了各种Unity 2D组件,但收效甚微。:( 我世界上大多数碰撞边界都以Collider 2D组件为标志(对受重力影响的简单球效果很好,但对于这种蜘蛛角色则效果不佳)。

11
2D游戏有未来吗?[关闭]
我目前正在研究2D软体物理引擎(因为目前尚不存在-_-),但我担心没有必要在此引擎上花费数年的时间。 尽管我喜欢研究它,但我怀疑这样的引擎能否获得任何收入,因为任何愿意为图书馆付费的人都可能会使用3D。 2D游戏在游戏行业中会有什么样的未来? 我是否应该放弃引擎并找到有意义的工作要做? 奖金: 我一直在尝试通过查看具有多个维度的游戏来实现2D游戏中的物理引擎的独特方法,但是这些游戏仍然以Paper Mario这样的2D视角来看。有任何想法吗?

6
在2D物理引擎中实现包裹线(例如Worms Ninja Rope)
我最近一直在尝试一些绳索物理方法,但发现“标准”解决方案-用一系列由弹簧或关节串在一起的物体制成绳索是不令人满意的。尤其是当绳索摆动与游戏玩法相关时。我并不真正在乎绳索的缠绕或下垂能力(无论如何,这对于视觉效果来说都是伪造的)。 对于游戏而言,重要的是绳索能够环绕环境然后展开。它甚至不必表现得像绳索一样-由直线段组成的“线”就可以了。这是一个例子: 这与蠕虫游戏中的“忍者绳”非常相似。 因为我使用的是2D物理引擎,所以我的环境由2D凸多边形组成。(特别是我在Farseer中使用SAT。) 所以我的问题是:您将如何实现“包装”效果? 似乎很明显,导线将由“分裂”和“接合”的一系列线段组成。移动对象所附着的那条线的最后(活动)线段将是固定长度的关节。 但是,确定活动线段何时和何处需要拆分所涉及的数学/算法是什么?何时需要将其与上一个细分市场合并? (以前,这个问题也曾询问过如何在动态环境中执行此操作-我决定将其分解为其他问题。)

5
联网2D游戏的延迟补偿
我想制作一个2D游戏,基本上是物理驱动的沙箱/活动游戏。我确实有些不明白。根据研究,似乎服务器更新仅应大约每100毫秒一次。我可以看到这对玩家是如何工作的,因为他们可以同时模拟物理并通过插值进行滞后补偿。 我不明白的是,这对于其他玩家的更新如何起作用。如果客户仅每100毫秒就收到玩家位置的通知,我就看不到这是怎么回事,因为在100毫秒内会发生很多事情。玩家可能在那个时候两次改变了方向。我想知道是否有人会对这个问题有所了解。 基本上,这对于射击之类的东西如何起作用? 谢谢

5
在基于网格的液体模拟中模拟压力
我在XNA游戏中有一个基于2D网格的水系统,我们有一种使用元胞自动机模拟水的滴落和扩散的方法。 沿斜坡流下的水的示例: 每个图块可以包含0到255个质量的液体值,以字节为单位存储。我没有使用floats旧的供水系统,但是它增加了复杂性并影响了性能。 每个水铺瓦都会使用一组简单的规则进行更新: 如果下面的图块中有空间,请尽可能多地从当前图块移至最下面的图块(向下流动) 如果2个边不相同且都不为零并且都可以通过,我们将获得3个图块的总和(左+当前+右),并将其除以3,剩下的就放在中间(当前)图块上 如果上述规则给出的总和为2,则我们应将图块分为两侧(1、0、1) 如果规则2的总和为1,则选择一个随机面流入 如果规则2失败,我们应该检查一侧是否可以通过,另一侧是否可以通过。如果是这样,我们将当前图块一分为二 如何扩展这种逻辑以包含压力?压力会使液体从“ U形弯头”上方上升并充满气穴。 当前如何失败的示例: 水应在U型弯管的两侧流动并平衡。此外,我还创建了一些方法来找出水障碍到底有多远,以及因此而受到的压力。现在,我需要能够获取这些数字并将其应用于其他区域以均衡压力。
30 xna  c#  physics  grid  water 


3
不同集成商的优缺点[关闭]
在游戏中创建诸如物理学之类的东西时,您需要一个积分器。我已经看到Verlet集成提到了几个地方,可以代替Euler集成。例如,托马斯·雅各布森(Thomas Jakobsen)的著名文献中。然而,在这篇文章格伦费德勒写道: 与其向您介绍现有的各种不同的集成商,不如让我追逐并直奔最好的。该积分器称为Runge Kutta order 4积分器,又名RK4。 因此,显然没有灵丹妙药。不同集成商的优缺点是什么?关于简单性,速度,准确性,稳定性等。哪种集成商最适合哪种类型的游戏?您什么时候使用Verlet,RK4或其他?您应该使用Euler吗?
29 physics 

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

2
基于四叉树与网格的碰撞检测
我正在制作一个4人合作R型游戏,并且即将实现碰撞检测代码。我已经阅读了许多有关如何处理碰撞检测的文章和内容,但是我很难弄清楚该如何处理。似乎四叉树是最常用的方法,但是在某些资源中,他们提到了基于网格的解决方案。对于以前的游戏中使用网格进行检测的情况,我对此感到满意,但是它实际上比四叉树好吗?我不确定哪个提供了最佳性能,并且我还运行了一个基准测试,两种解决方案之间没有太大区别。 这个比那个好吗 ?或更优雅?我真的不确定应该使用哪一个。 欢迎任何建议。谢谢。

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 

6
如何确保旋转的物体以正确的末端击中目标?
我正在研究一种投掷刀型武器,玩家可以自由瞄准然后投掷一把刀。刀在空中旋转,在碰撞时停止旋转,并将其自身与碰撞的物体作父母。旋转是通过动画处理的,而刀的路径是通过物理处理的。 我面临的一个问题是如何确保当刀与敌人碰撞时,刀将朝向他们。此刻有时会发生的情况是刀先嵌入敌人的手柄中。这显然是不现实的。同时,我认为如果刀首先与刀片碰撞,只刀“击中”敌人是非常不合理的,因为刀的旋转速度超出了玩家的控制范围。 我一直在观看许多类似武器的慢速杀伤镜头,每次抛出武器,它都会在空中旋转,而且魔术般地总是以叶片指向目标为目标。对于投掷距离将保持一致的游戏,这很简单。但是我不确定如何预测这一点,因为其中涉及许多不可预测的因素。刀的方向,刀的旋转,敌人的位置,与敌人的距离等。如果可能的话,我宁愿不必使用复杂的预测逻辑,因为游戏将用于相当低端的设备。有没有“烟和镜子”的方法来解决这个问题? 示例:https://youtu.be/0fav8lFpBko?t = 42s


4
这段代码中“增量”的含义是什么?它反映了游戏开发人员的标准吗?
我对游戏编程了解甚少,但想了解更多。我正在尝试了解此游戏的代码。我试图理解为什么代码会将“ delta”传递给Shipcontrols.js,后者会根据用户输入来更改飞船的方向。 基本上,游戏每个循环都会计算“增量” ... 这是使用delta到一个循环的堆栈的缩写版本... var delta = now - this.time; this.time = now; this.current.render.call(this.current, delta, this.renderer); 走进这里... ctx.manager.add("game", scene, camera, function(delta, renderer) { if(delta > 25 && this.objects.lowFPS < 1000) this.objects.lowFPS++; var dt = delta/16.6; this.objects.components.shipControls.update(dt); 走进这里... bkcore.hexgl.ShipControls.prototype.update = function(dt) { var pitchAng; var yaw; var roll; if (undefined …

7
多线程2D重力计算
我正在开发一个太空探索游戏,目前我已经开始研究重力(在XNA的C#中)。 重力仍然需要调整,但是在我能够做到这一点之前,我需要在物理计算中解决一些性能问题。 这使用了100个对象,通常不进行物理计算就可以渲染其中的1000个对象,而FPS则超过300 FPS(这是我的FPS上限),但是超过10个左右的对象会将游戏(及其运行的单线程)带入在进行物理计算时会屈膝。 我检查了我的线程使用情况,发现第一个线程正在杀死所有工作,因此我认为只需要对另一个线程进行物理计算即可。但是,当我尝试在另一个线程上运行Gravity.cs类的Update方法时,即使Gravity的Update方法中没有任何内容,游戏仍然会降低到2 FPS。 Gravity.cs public void Update() { foreach (KeyValuePair<string, Entity> e in entityEngine.Entities) { Vector2 Force = new Vector2(); foreach (KeyValuePair<string, Entity> e2 in entityEngine.Entities) { if (e2.Key != e.Key) { float distance = Vector2.Distance(entityEngine.Entities[e.Key].Position, entityEngine.Entities[e2.Key].Position); if (distance > (entityEngine.Entities[e.Key].Texture.Width / 2 + entityEngine.Entities[e2.Key].Texture.Width / 2)) …

3
关于游戏开发物理的好书是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我正在寻找一本很好的初学者书籍,有关游戏开发中的物理学。专注于2D游戏的东西会更好。
23 2d  physics  books 

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.