问题标签 [jbox2d]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java、LibGDX 和 JBox2d:调整窗口大小,同时保持所绘制对象的纵横比
我正在用 Java 进行学习实验。我正在尝试使用 Java 和第 3 方 API“LibGDX”创建一个简单的“Megaman”风格游戏。OrthographicCamera
我对来自 LibGDX 的对象与来自 LibGDX 的“JBox2d”实现的对象之间的关系有了相当深入的了解World
。
但是,当我调整窗口大小时,里面的对象会World
拉伸。我已经使用了接口的resize(int width, int height)
方法。Screen
在其中我重置了OrthographicCamera
的宽度和高度。这似乎对图像在物理模拟中的外观或行为方式没有任何影响。
所以我的问题是:如何正确调整 LibGDX/JBox2d 应用程序窗口的大小而不扭曲被模拟的对象?
这是代码(以 git repo 的形式,因为我发现 GitHub 更快、更容易、对 SO 服务器更友好......)
外部链接
https://gist.github.com/konnerdroid/8113302
外部链接
java - JBox2D 坐标不匹配
在 Jbox2D 程序上工作,我创建了 2 个对象,一个 (0,10) 米和 10 米宽和 1 米宽的矩形,以及一个半径为 0.5f 米的 (1,0) 球
当我的程序运行时,球向平台移动并像我预期的那样击中矩形,但我得到的数字不是我预期的
如果 X 和 Y 是从球的中心计算的,那么在 Y = 9.5 处,球应该离盒子只有 0.5 的距离。即使它使用直径,它仍然应该在 Y = 9 处最多 1 米远。
任何人都知道为什么当半径只有 0.5 时它计算 Y 距离为 2 米?
java - Box2D:绳摆(不停)
我想制作一个有“钟摆”不断摆动,不停歇的场景。为了更清晰,我上传了一张图片。所以我尝试使用 Box2D 关节。例如:
但它不起作用。如果我注释限制和电机线,我得到的结果与未注释这些线时得到的结果相同。虽然启用了电机,但它似乎不起作用。
PS 当用户按下按钮释放盒子时,电机必须停止。所以盒子会因为重力而掉到地上。
有人能帮我吗?谢谢!!
java - 这是使用 Java 2D Graphics API 的正确方法吗?
我正在为 JBox2D 模拟创建一个图形前端。模拟以增量方式运行,并且在更新之间,应该绘制模拟的内容。类似于游戏,除了没有输入。
我只需要几何图元来绘制 JBox2D 模拟。这个 API 似乎是最简单的选择,但它的设计有点令人困惑。
目前,我有一个名为Window
扩展的类JFrame
,其中包含另一个名为的类作为成员Renderer
。该类Window
仅初始化自身并提供一个updateDisplay()
方法(由主循环调用),该updateDisplay(objects)
方法调用Renderer
. 我自己制作了这两种方法,它们的唯一目的是调用repaint()
.Renderer
JPanel
应该这样使用吗?还是我应该使用一些更复杂的动画方法(例如在某些后端线程中涉及事件和/或时间间隔)?
java - 碰撞后如何使两个物体粘在一起?
我真的坚持这一点,我可以成功检测到碰撞,但我不能让参与碰撞的两个物体粘在一起。
这是我的ContactListener
这也是我在 world.step() 行之后直接放入我的 render() 的内容
我非常困惑于在后解决或预解决上放置什么真的很困惑。我遵循 iforce2d 粘性弹丸http://www.iforce2d.net/b2dtut/sticky-projectiles但我不懂 C++,并且在 Eclipse 中工作时遇到很多语法错误。请有人给我看一个工作碰撞的示例代码,请在java中碰撞后身体粘在一起。
java - 摇晃不稳定的 JBox2D 机构
编辑 2:http: //youtu.be/KiCzUZ69gpA - 正如您在此视频中看到的,当我还为每个身体渲染一些文本时,晃动效果会被放大。观察当每个物体在其附近渲染一些文本时,地面主体(蓝色)如何剧烈晃动,以及在文本渲染被注释掉时它是如何不剧烈晃动的。这个必须连接!
编辑:我对原始问题做了两个重要的补充:我添加了我的渲染函数和相机(翻译)方法,我认为错误实际上是存在的,而不是在 JBox2D 中。
我正在尝试模拟和渲染许多与RevoluteJoint
s 连接的随机体(2-20)。一个主体可以连接到多个其他主体,并且没有单独的结构,即所有主体都是相互连接的。
但是,在观看实时渲染时,它非常不稳定且不稳定。我的意思是,物体的位置(或者角度)似乎无缘无故地随机波动,使模拟看起来不稳定。
这是我正在观察的视频:
注意中间的正方形和旋转的矩形。中间的正方形以看似随机的间隔轻微地前后移动,旋转的矩形非常抖动(看看它旋转的点)。
这种影响可能是什么原因造成的?是 (J)Box2D 的一些已知问题,还是我的渲染系统的问题?我认为我以某种方式错误地配置了物理引擎,但渲染系统中的一些浮点数学也可能是罪魁祸首。
以下是我创建身体和关节的方式:
时间步长为0.01f
。
这是我绘制身体的方式:
我认为问题可能是我处理所有身体渲染的方式。
这是每个主体的算法: 1. 将Graphics2D
对象平移到其位置 2. 将其旋转body.getAngle()
3. 渲染主体 4. 将图形向后旋转 5. 将图形向后平移
难道是在所有这些转换中出现了问题吗?
当我删除对相机方法的调用时,效果似乎已经降低。这些是相关的相机方法:
但是它们的哪一部分会引起问题?
android - 将物理应用到 Android 视图对象
我目前有一个 android 应用程序,它利用 UI 的本机 android 视图(例如 imageviews/buttons 等)
虽然这个应用程序不是游戏,也不需要任何繁重的图形或 OpenGL,但我想加入一些与物理相关的交互。没有什么太大的影响,但可能会显示出轻微的碰撞/反弹、减速/加速或可能的摩擦。
这是否可以在 android 框架内或使用外部物理库(如 jbox2d)进行模拟,而无需使用整个游戏引擎(如 andengine、libgx 等)。
PS这是API 15+
谢谢大家。
box2d - 在地面上添加随机孔
在我的 Box2D 世界中,我有一个地面和一个动态对象。
地面最初被创建为一个盒子:
我想在地上添加随机洞:
是否可以在remove
部分地面上打孔,或者我应该移除现有的地面,然后根据我拥有的孔数添加单独的“地面”?
java - 如何在 libgdx + box2d 中检查身体是否几乎停止移动
所以,我有一个球员身体+夹具等,它本质上是一个反弹的球。
我想检测它何时“几乎”完成移动。
目前我这样做:
这主要是可行的,问题是当玩家击中某物时,其速度为 0 的瞬间,因此返回 true。我真正想要的是在它基本完成时返回 true。最好在我可以设置为我喜欢的任何范围内,因为我调整了我的游戏世界的物理。
我不能检查它是否正在睡觉,因为那来得太晚了,直到它停止对它施加作用力后它才会睡觉,我需要在它之前。
我可以只存储它停止的时间/停止的步骤数,但我希望有一个很好的预先存在的方法,我错过了。
有任何想法吗?
java - Jbox2D isSensor 用于 NPC 碰撞
我有一个 2D 横向卷轴游戏,有点像银河战士,我想添加一些 NPC,我想在世界中用重力等模拟它们(它们与地板碰撞),但我没有希望它们与玩家发生碰撞。
将fixture设置为isSensor = true,会导致NPC从地板上掉下来,设置为false会导致他们与玩家发生碰撞。
有没有什么方法可以在不模拟不同的世界然后检查位置的情况下实现这一点?