问题标签 [game-physics]

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.

0 投票
2 回答
2658 浏览

javascript - Javascript球碰撞

我正在尝试用简单的物理创建一个简单的 JavaScript 游戏。我可以确定 2 个球何时发生碰撞,但我在处理碰撞时遇到了问题。

有谁知道这方面的任何有用的教程?我已经在互联网上搜索了几天,但似乎找不到任何东西。

0 投票
4 回答
1305 浏览

c# - 2D 游戏物理矢量问题

我一直在用 C# 编写一个简单的程序,其中Ball [X,Y] 坐标是周期性递增的。

我已经设法实现了一种碰撞检测方法,但我试图确定如何以一个角度反射球,使其沿着相同的线性路径反弹回来。

三角法

0 投票
2 回答
1774 浏览

javascript - jQuery - 如何在协调系统中移动图形

可以说我有这个代码:

数字 div 所在的位置可以说是一个数字的图片。我如何使用 jQuery 来移动 gameFrame 中的图形,键盘键上下左右?

0 投票
1 回答
380 浏览

game-physics - BulletPhysics 中的子弹

在子弹物理学中模拟子弹的最佳方法是什么?

小胶囊体?某种光线追踪?还有什么?

如果可能的话,一些示例代码会很好。

0 投票
2 回答
3168 浏览

algorithm - 圆到圆段碰撞

我正在努力寻找一种坚如磐石的解决方案来检测圆和圆段之间的碰撞。想象一个游戏敌人的视野锥,圆圈代表感兴趣的对象。

底部的图表是我为尝试解决一些可能的情况而绘制的,但我相信还有更多。

我知道如何快速排除极端情况,我丢弃任何不与整个圆碰撞的目标,并且任何主圆的中心在目标圆内的情况都自动为真(图中的 E)。

我正在努力寻找一种检查其余案例的好方法。我试过比较圆心和线段外线端点之间的距离,我试着计算出目标圆心与主圆心的角度,并确定它是否在线段内,但似乎两种方法都无法捕捉到所有情况。

具体来说,如果目标圆靠近中心但不接触它(下方 E 和 B 之间的某个位置),或者如果该线段比目标圆窄(因此中心在该线段内但两个边缘),它似乎变得很时髦在外面)。

有没有可靠的方法来做到这一点?

额外信息:该段由位置 P、方向 O(其大小为圆半径)和视图大小 S 描述。

迄今为止,我最成功的尝试涉及确定向量 ca1 和 ca2 的角度,并检查它们中的任何一个是否位于向量 a1 和 a2 的角度之间。如上所述,这适用于某些情况,但不适用于目标圆大于线段的情况。

编辑 2 在实施下面的最佳建议后,仍然存在误报,我不确定如何最好地消除。请参阅下面的粉红色图表。右下角的圆圈报告为与线段发生碰撞,因为它的边界与半空间和主圆圈重叠。

碰撞类型 当前解决方案

假阳性 边缘案例


最终编辑

在发现另一个边缘情况(第 4 张图片)之后,我决定采用一种方法,该方法结合了下面的两个最佳答案,并且似乎涵盖了所有基础。为了后面的人,我在这里描述一下。

首先排除任何未能通过快速循环测试的内容。

然后测试圆与线段的两条外线之间的碰撞。如果它触及任何一个,则返回 true。

最后,使用圆心和两条外线(如下面的 Gareth 所述)进行几个点到半空间测试。如果它通过了它所在的两个,否则返回false。

0 投票
1 回答
1085 浏览

physics - 基于脉冲的物理 - 在轻物体上堆叠重物体

我正在开发一个基于脉冲的物理引擎,但我对质量差异很大的物体有疑问。

在每一帧,引擎都会应用脉冲来处理碰撞。脉冲在每对碰撞对象之间进行多次迭代。如果物体的质量大致相同,这很有效。

但问题是,当将重物放在轻物上时,重物会先将轻物压入地面。

问题的原因是,施加在两个物体之间的脉冲太小,因此即使经过多次迭代,也不足以抵消重物体上的重力。

我相信有一些方法可以准确计算所需的脉冲,但我担心它太复杂了?所以我主要是在寻找一些技巧来解决这个问题,但不会改变引擎的工作方式。

感谢您的任何想法!

0 投票
1 回答
1278 浏览

iphone - 如何使用弹弓以不同的角度移动物体?

我是 iPhone 应用程序开发和 Xcode 的初学者,我正在使用具有弹弓效果的 Box2D 开发一个小游戏。使用弹弓时,我需要帮助以各自的角度移动身体。弹弓是使用绘制的,ccDrawLine并在其上放置一个身体。

在我的项目中,当使用弹弓时,物体会在不同的方向上随意移动。有谁知道如何解决这一问题?

我的代码:

绘制弹弓:

将物体放在吊索上:

我正在尝试手动创建和添加角度。

角度创作:

0 投票
1 回答
2888 浏览

c++ - Box2D (C++) 重力井

目前我在我的一个游戏中使用 Box2D 物理引擎——我想知道我是否可以创建一个重力井,其中所有物体都被吸引到一个任意点。有什么方法可以做到这一点,还是我必须对每个身体施加某种自定义力量?(我尝试制作一个静态的超致密物体,但 Box2D 并没有在身体对身体的基础上应用牛顿万有引力定律)

另外,有没有办法制作反重力井?我可以制作一个以任意点为中心的更密集的球体并使用浮力来实现这一点吗?

0 投票
1 回答
896 浏览

objective-c - Objective-C ccKeyDown 玩家移动

我目前正在使用 Objective-C 开发 Cocos2D Mac 游戏。

我的运动正常,但我还有一个问题..

我使用这段代码来移动我的播放器,它是一只苍蝇,所以它需要在各个方向上自由移动。

键盘事件:

游戏时间循环:

我的问题是当我的播放器向左移动时,不可能同时添加向上键,因此播放器将向左和向上移动。实现这一目标的最佳方法是什么?

0 投票
3 回答
2744 浏览

java - 在我们的弹丸运动中实施风速?

我正在尝试在Scorched earth 或 Pocket Tanks 的脉络中用Java制作坦克游戏,因为用户定义了射弹的角度和速度。我在互联网上寻找一种将风速应用到我们的弹丸系统中的方法。如何将风速添加到弹丸运动中?

我的程序计算速度的 X 加速度和 Y 加速度,并考虑达到的最大高度、到达终点所需的总时间以及发射的弹丸的角度。