Questions tagged «farseer-physics-engine»

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


3
您如何在2物理引擎(如farseer / box2d)中遵循AI路径?
我正在将自己一直在努力的2d自上而下游戏移植到像Farseer这样的合适的刚体物理引擎中。到现在为止,我只是在需要的地方才编写了自己的物理代码。 我正在尝试在这里学习正确的做事方式。 一旦在物理引擎内部使它们成为刚体,使AI遵循设定路径的正确方法是什么? 如果我在地图上有需要AI遵循的导航节点路径,那么以前,我会通过沿下一个步骤计算它们应位于的下一个位置并将其手动设置为该位置来手动沿路径移动它们。 但是现在它们是刚体,容易受到碰撞以及任何可能撞击它们并将其击落的力。 因此,为了使AI向前迈进,我相信我现在应该向它们施加冲动/力量了吗?我不应该再手动设置每个帧的位置。 因此,我认为我需要从一个确定性世界出发,在这个世界中,我必须迫使AI严格遵循一个不确定性世界,在这种情况下,如果受到撞击,它们可能会在任何方向被撞倒,我只是将它们轻推到路径中的下一个节点让他们动起来。 是对的吗?那是别人怎么做的吗? 这就引发了一些问题,即如何避免您的AI一直走在不正确的道路上,而又如何避免它们卡在风光的拐角处?你们如何处理这种事情呢? 还是以某种方式将两者混合并让您的AI通过手动设置其位置而遵循固定的路径,并且仅在您可以轻松控制的某些情况下对其他作用力做出反应,才更好呢? 感谢您的任何建议。

3
为什么Farseer 2.x将临时人员存储为成员而不是堆栈中?(。净)
更新:此问题涉及Farseer2.x。较新的3.x似乎没有这样做。 目前,我在广泛使用Farseer Physics Engine,并且我注意到它似乎将许多临时值类型存储为类的成员,而不是像人们期望的那样存储在堆栈中。 这是来自Body该类的示例: private Vector2 _worldPositionTemp = Vector2.Zero; private Matrix _bodyMatrixTemp = Matrix.Identity; private Matrix _rotationMatrixTemp = Matrix.Identity; private Matrix _translationMatrixTemp = Matrix.Identity; public void GetBodyMatrix(out Matrix bodyMatrix) { Matrix.CreateTranslation(position.X, position.Y, 0, out _translationMatrixTemp); Matrix.CreateRotationZ(rotation, out _rotationMatrixTemp); Matrix.Multiply(ref _rotationMatrixTemp, ref _translationMatrixTemp, out bodyMatrix); } public Vector2 GetWorldPosition(Vector2 localPosition) …

3
使用Farseer拼贴物理
我在Farseer物理引擎中遇到问题,在平铺环境中,即使对象完美对齐,我的对象有时也会与其他对象的角相互作用。 我读过一些关于有人建议您使用Marching Squares或类似方法来计算和创建一个较大的对象的信息。但是,这不是一种选择,因为我希望每个瓷砖都具有不同的物理特性,例如不同的摩擦力和恢复力。 我的问题是,到底是什么原因造成的,它是浮点精度问题还是其他原因?有没有一种方法可以在不破坏整个物理引擎的情况下进行修复?

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.