标签: physics-engine

2D 独立游戏的最佳引擎是什么?

什么是(小型)独立游戏的最佳引擎?我对熟悉引擎、特殊功能等需要多少时间的信息很感兴趣。

另外,我想知道我应该为这种类型的游戏使用什么物理引擎。

c++ physics-engine

5
推荐指数
1
解决办法
3万
查看次数

与 CPU 上的物理引擎相比,GPU 上的 PhysX 速度有多快?

我有一个为使用Bullet物理引擎而编写的应用程序。我在 8 核 Intel i7 2600K CPU 上运行它。该应用程序必须处理数百万个物理工作块,每个工作块都可以独立完成。目前它有8 个进程运行,每个进程独立地完成其总数的配额。综上所述,这项工作有很多容易并行的地方。

假设我可以获得最好的 NVIDIA 消费类显卡(例如 Titan),通过从 CPU 上的 Bullet 切换到GPU 上的Physx,我可以看到物理引擎性能的大致改进是多少?也就是说,如果针对 Physx 重写,该应用程序的运行速度大约会快多少?

我找到了一些比较 Bullet 和 Physx 的结果质量的论文,但找不到任何有关性能比较的信息。

gpu physx game-physics bulletphysics physics-engine

5
推荐指数
1
解决办法
9868
查看次数

集成WPF,Unity3D(和Kinect)

我在Visual Studio中创建了一个WPF项目.XAML标记由C#代码隐藏管理.我想要做的是在用户界面上创建一个组件,它将显示一个3D场景.我希望这个3D场景由Unity管理,因为我需要利用Unity的物理引擎.用户必须能够通过Kinect识别的手势(例如抛球)与此3D场景进行交互.

有什么方法可以连接WPF,Unity3D和Kinect,以便用户能够以这种方式操作3D场景吗?如果是这样,你能提供一些示例/教程吗?如果没有,让用户使用Kinect手势操纵3D场景的最佳方法是什么?

c# wpf unity-game-engine physics-engine kinect

5
推荐指数
1
解决办法
4280
查看次数

Matter.js:在画布上放置文本或图像

我想将字体或静态图像放在画布上,但不确定使用 Matter.js 的最佳方法是什么。现在,对于图像,我只是创建一个大小为“0”的主体并将图像 url 放在 render.sprite.texture 属性中。似乎可以解决问题,但是否有不同/更好的方法将静态图像放在画布上?

此外,在创建/绘制其他任何内容之前,我正在使用脚本顶部附近的 'afterRender' 事件将文本放到画布上:

_sceneEvents.push(
    Events.on(_engine, 'afterRender', function(event) {
        var context = _engine.render.context;
        context.font = "45px 'Cabin Sketch'";
        context.fillText("THROW OBJECT HERE", 150, 80);
    });
);
Run Code Online (Sandbox Code Playgroud)

唯一的问题是文本一直被绘制在顶部,所以我的可拖动对象一直在文本后面。我只希望文本留在背景中,就像静态图像一样,但我认为在画布上绘制字体可能比让用户下载另一个图像更好。有什么帮助吗?

html javascript canvas physics-engine

5
推荐指数
1
解决办法
8329
查看次数

“physi.js”导致错误:“无法从原点‘null’访问脚本”

我正在尝试使用 physi.js 库 ()。我遵循了给出的所有步骤:

https://github.com/chandlerprall/Physijs/wiki/Basic-Setup

但是,我得到了错误:

Uncaught SecurityError: Failed to construct 'Worker': Script at 'file://172.16.159.200/js/physijs_worker.js' cannot be accessed from origin 'null'.
Run Code Online (Sandbox Code Playgroud)

我试图更深入,并看到该行的问题:

this._worker = new Worker( Physijs.scripts.worker || 'physijs_worker.js' );
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个问题?浏览器是谷歌浏览器。我检查过,文件“physijs_worker.js”出现在正确的位置。

javascript physics-engine three.js physijs

5
推荐指数
1
解决办法
6746
查看次数

JavaScript、Matter.js:增加圆的半径

我有一个小示例脚本,其中有一个圆(半径:40),它会落到地面上。但是当我将其半径增加到 80 时,似乎只有圆的图形发生了变化,但物理原理没有变化:

<html>
<body></body>
</html>
<script src="matter.js"></script>
<script>
var Engine = Matter.Engine,
    World = Matter.World,
    Bodies = Matter.Bodies
engine = Engine.create(document.body,{render:{options:{wireframes: false}}})
engine.render.options.background = "#7f7f7f"
ground = Bodies.rectangle(400,590,800,20,{isStatic:true})
World.add(engine.world, ground)
circle = Bodies.circle(400,20,40,{render:{fillStyle:"#0000ff"}})
World.add(engine.world, circle)
Engine.run(engine)
setTimeout(increaseRadius, 1500)

function increaseRadius(){
  circle.circleRadius = 80
}
</script>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

javascript physics-engine matter.js

5
推荐指数
1
解决办法
2382
查看次数

使用 ReactPhysics3D 在 n 体模拟中未检测到碰撞

我目前正在使用 ReactPhysics3D(https://www.reactphysics3d.com/)进行 n 体模拟。

我对两个球体的碰撞进行了简单的模拟。然后,我在模拟运行时打印两个球体的坐标。问题是它们不会碰撞,而是相互穿过。然后,他们在奇怪的位置碰撞。

这是设置创建了两个球体第一个球体的位置为 (-2, 0, 0),初始速度为 (1, 0, 0),半径 = 0.5,质量 = 10 第二个球体的位置为 (0, 0, 0)初始速度 (-1, 0, 0),半径 = 0.5,质量 = 10

我以为他们会在碰撞位置0: (-1.5, 0.0, 0.0)1: (-0.5, 0.0, 0.0),但他们通过它,并在碰撞0: (-0.5, 0.0, 0.0)1: (-1.5, 0.0, 0.0)

这是我的代码

int main (int argc, char **argv) {
    Vector3 gravity = Vector3(0.0, 0.0, 0.0);

    double mSimulationTime = 2.0;
    DynamicsWorld dynamicsWorld(gravity);

    // create a rigid body with the position
    Vector3 initPosition1(-2.0, 0.0, …
Run Code Online (Sandbox Code Playgroud)

c++ simulation game-engine game-physics physics-engine

5
推荐指数
1
解决办法
256
查看次数

在游戏中的图形和物理引擎之间共享数据?

我正在编写一个由几个模块组成的游戏引擎。其中两个是图形引擎物理引擎

我想知道在它们之间共享数据是否是一个好的解决方案?

两种方式(共享或不共享)看起来像这样:

不共享数据

GraphicsModel{
    //some common for graphics and physics data like position

    //some only graphic data 
    //like textures and detailed model's vertices that physics doesn't need
};

PhysicsModel{
    //some common for graphics and physics data like position

    //some only physics data 
    //usually my physics data contains A LOT more information than graphics data
}

engine3D->createModel3D(...);
physicsEngine->createModel3D(...);

//connect graphics and physics data 
//e.g. update graphics model's position when physics model's position will change
Run Code Online (Sandbox Code Playgroud)

我看到两个主要问题:

  1. 大量冗余数据(例如物理和图形数据的两个位置) …

c++ graphics 3d-engine game-engine physics-engine

4
推荐指数
1
解决办法
1270
查看次数

nape中船只和子弹的sensorGroup和sensorMask组合

我有多个宇宙飞船(SHIP_CBCbType),可以全部射击导弹(BULLET_CBCbType).如何设置在那里sensorGroup,sensorMaskInteractionListeners让我得到了以下行为:

  1. 船舶全部碰撞并互相反弹.
  2. 子弹根本不会反应或相互感知.
  3. 子弹与Enemy Ships有关.
  4. 子弹不会发射射击子弹的船.

甚至可以通过在每个对象上设置正确的sensorGroup和sensorMask来获得所有这些行为吗?

haxe actionscript-3 game-physics physics-engine nape

4
推荐指数
1
解决办法
1000
查看次数

Unity DOTS (ECS) 中的“FixedUpdate”在哪里?

我开始寻找使用 DOTS(面向数据的技术堆栈)方法来制作对象的方法。

到处都有几个示例,Youtube 视频以及直接来自 Unity 的示例,例如 github 存储库“EntityComponentSystemSamples”。

在所有这些中,我偶然发现了“OnUpdate”,但从未发现“OnFixedUpdate”。

通常,Unity 游戏对象会同时拥有这两种对象,一种用于每次图形帧更新 ( OnUpdate),另一种用于每次物理运动更新 ( OnFixedUpdate)。

当尝试创建使用 Rigidbody.AddForce() 的行为时,使用 FixUpdate() 始终很重要。

这个概念在 DOTS 中被删除了吗?如何在 DOTS 中向PhysicsBody 添加脚本化的变化力?

目前,我正在将我的添加force*deltatimeUnity.Physics.PhysicsVelocity更新中。

unity-game-engine physics-engine unity-dots

4
推荐指数
2
解决办法
4213
查看次数