我正在编写一个类似最终幻想的游戏引擎,带有2D背景和带有Irrlicht的3D模型.要计算与背景中对象的碰撞,我使用一个不可见的网格,如下所示:

我已尝试使用此代码,但当播放器到达网格边缘时,它会倒下:
TriangleSelector sel = device.SceneManager.CreateTriangleSelector(Program.field.currentScene.walkmeshLoaded, null);
CollisionResponseSceneNodeAnimator coll = device.SceneManager.CreateCollisionResponseAnimator(sel, playerNode);
playerNode.AddAnimator(coll);
coll.Drop();
sel.Drop();
Run Code Online (Sandbox Code Playgroud) 我一直在通过编写基本思维导图应用程序来试验HTML5画布.我试图找出是否有任何javascript API用于管理画布中的对象,如图像或形状之间的碰撞检测.我认为编写自己的不是一个好主意,因为可能有一些好的API.任何人都有这方面的线索或一些信息.我非常感谢.
我需要制作一个算法来检测两个球体何时碰撞,以及一个碰撞后瞬间出现的方向.
比方说,想象一下当你在一场比赛中打开你的牌桌时,所有的球都是"随机"相互碰撞.
所以,在开始自己编写代码之前,我在想是否已经实现了这个.
Thx提前!
Cyas.-
我正在尝试为我正在制作的自定义Minecraft客户端设计碰撞检测算法.基本上,整个世界都是由立方体组成,而玩家(或相机)需要能够站立并移动这些立方体.我想要的结果如下图所示:

绿线是玩家的运动矢量.当玩家在其中一个立方体的平面上刷牙时,我希望矢量变为与平面垂直的矢量.但是,矢量应该保持它在平面方向上的所有速度,但是会失去朝向平面的所有速度.
我希望我的问题清楚.实现这样的碰撞检测系统的最佳和最有效的方法是什么?此外,这样的系统是否允许简单的重力组件?
编辑:忘记提及,立方体存储在三维数组中,[x,y,z].
我正在研究一个涉及ff的简单AndEngine游戏.精灵
a.)坦克b.)士兵c.)炸弹
我在这里有一个类似的问题:Android AndEngine:简单的精灵碰撞
游戏的样子:

但是,在解决最初的问题时,又出现了另一个问题:
当炸弹(飞机当前所在的地方并垂直下降,直到它到达目标或地板,通过鼠标点击)击中目标,说一名士兵,士兵精灵必须分离并留下血液飞溅精灵1秒,以及炸弹爆炸精灵.但是,游戏力关闭会产生indexOutOfBoundError.据我所知,这可能是炸弹与其目标之间精灵数量的差异,导致出现数组错误,但logCat根本没有帮助.
09-22 11:13:37.585: E/AndroidRuntime(735): FATAL EXCEPTION: UpdateThread
09-22 11:13:37.585: E/AndroidRuntime(735): java.lang.IndexOutOfBoundsException: Invalid index 5, size is 5
09-22 11:13:37.585: E/AndroidRuntime(735): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
09-22 11:13:37.585: E/AndroidRuntime(735): at java.util.ArrayList.get(ArrayList.java:304)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.entity.Entity.onManagedUpdate(Entity.java:1402)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.entity.Entity.onUpdate(Entity.java:1167)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.entity.Entity.onManagedUpdate(Entity.java:1402)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.entity.scene.Scene.onManagedUpdate(Scene.java:284)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.entity.Entity.onUpdate(Entity.java:1167)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.engine.Engine.onUpdateScene(Engine.java:591)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.engine.Engine.onUpdate(Engine.java:586)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.engine.Engine.onTickUpdate(Engine.java:548)
09-22 11:13:37.585: E/AndroidRuntime(735): at org.andengine.engine.Engine$UpdateThread.run(Engine.java:820)
Run Code Online (Sandbox Code Playgroud)
如此处所示,logCat没有在我的代码上给出错误,但是在AndEngine本身上,并且很可能不是这样. …
我遇到了一些碰撞问题.我有两个相同大小和质量的物体.当一个人碰到另一个静止的时候,我会得到正确的行为(图像中的灰色区域).当我有两个彼此相邻的对象时,行为不太正确.Spritekit结果在左边.预期/需要的结果是正确的.
我想我知道发生了什么,但不知道该怎么办.如果对象是一个质量两倍的对象,那么spritekit行为将是正确的,但它们是单独的对象,最上面的对象应该采用传入粒子的速度.它似乎将它们视为一个对象.
在两个人碰到一个小间隙之后我试过作弊和缩小半径,但事情变得一团糟.有人知道我能在这做什么吗?谢谢.

我正在进行一次技术测试,下面给出了问题陈述,我不知道我到底要做什么,请通过提供一些示例代码来帮助我.
Implement a hash-map data structure from scratch , where both key and value are of string data type.
The details of how a hash works can be found in Chapter 11 of the book "Introduction to
Algorithms" by Cormen, Leiserson, Rivest. You should also refer to Section 3.7 of "The
Algorithm Design Manual" by Steven Skiena. For the required hash-map implementation,
the following conditions hold true:
1. The key is made up of lower-case english alphabets only (a,b,c...z). It …Run Code Online (Sandbox Code Playgroud) 我是 Bullet 新手,如果我的问题对您来说很琐碎,我提前道歉。
我需要从 .stl 文件加载一组凹三角形网格并执行碰撞检测。用户可以移动对象。从用户手册中,我读到:“凹三角形网格:对于静态世界环境,表示静态三角形网格的一种非常有效的方法是使用 btBvhTriangleMeshShape。”
因此,我的问题是: - Bullet 可以检测使用 BvhTriangleMeshShape 建模的凹面网格对象之间的碰撞吗?- contactTest 和 CollisionWorld::PerformDiscreteCollisionDetection() 之间的真正区别是什么 - 我是否需要为凹面碰撞检测指定不同的碰撞算法?
我正在使用BulletSharp维护的 Bullet C# 包装器。我所做的是设置我的子弹环境:
CollisionConfiguration bt_collision_configuration;
CollisionDispatcher bt_dispatcher;
BroadphaseInterface bt_broadphase;
CollisionWorld bt_collision_world;
double scene_size = 500;
uint max_objects = 16000;
bt_collision_configuration = new DefaultCollisionConfiguration();
bt_dispatcher = new CollisionDispatcher(bt_collision_configuration);
float sscene_size = (float)scene_size;
Vector3 worldAabbMin = new Vector3(-sscene_size, -sscene_size, -sscene_size);
Vector3 worldAabbMax = new Vector3(sscene_size, sscene_size, sscene_size);
bt_broadphase = new AxisSweep3_32Bit(worldAabbMin, worldAabbMax, max_objects);
bt_collision_world = new CollisionWorld(bt_dispatcher, bt_broadphase, bt_collision_configuration); [/code] …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一款 2D 平台游戏,我意识到我的碰撞编程存在一个大问题。你看,为了找出与玩家的碰撞,我只是将玩家矩形移动,然后在碰撞时,我通过查看玩家的 x 和 y 加速度将玩家推开。
问题是,当使用这种方法时,玩家的速度可能会使玩家跳过他应该碰撞的目标,因为他应该碰撞的矩形太小。例如,如果平台大小为 9 像素,而玩家的移动速度为 11 像素,则他有可能会跳过目标。这种情况通常发生在玩家发射的子弹很小且速度很快的情况下(而且由于游戏的性质,我不希望它们是瞬时的)。
所以我想了想,想出了一个解决方案,从子弹之前所在的位置到他现在所在的位置画一条线,然后检查目标矩形是否与其碰撞。我搜索了执行此类操作的方法,但没有找到任何关于如何将其实现到 Pygame 中的好的解释。
我是否使用像素遮罩?如果是,怎么做?Pygame 中是否已有某些函数可以使用此方法?我真的需要一些帮助。
所以我想用 pygame 制作一款我们中间类型的游戏。我刚刚开始,所以我没有太多东西,现在正在制作地图。然而,我正在努力解决的一件事是碰撞逻辑。该地图目前具有细长的八边形形状,但我认为无论形状如何,我都会使用类似 pygame 多边形的东西。当我运行现在的代码时,它检查我的玩家(pygame 矩形)和墙壁(pygame 多边形)之间的碰撞,它说:
TypeError: Argument must be rect style object
我发现这是因为 pygame 多边形返回一个矩形,但在碰撞检查器中没有以这种方式分类。我尝试过一个名为碰撞的库,并感谢碰撞检测付出了巨大的努力,但玩家仍然能够穿过墙壁。旁注:我保存了我使用这个库的代码,如果有人想看到它,也许可以改进我的错误。
无论如何,把这一切归结为:
我需要一种方法来检测多边形和矩形之间的碰撞(真的,真的最好在pygame中)
感谢您提供的任何帮助,如果您有问题/请求,请发表评论。
这是我的代码:
import pygame
pygame.init()
W, H=500, 500
screen = pygame.display.set_mode([500, 500])
running = True
bcg=(200, 200, 200)
red=(255, 0 ,0)
purp=(255, 0, 255)
wall=(100, 100, 100)
class player:
def bg(self):
screen.fill(bcg)
x,y=self.x,self.y
self.outer=(
(x,y),
(x+800, y),
(x+1200, y+200),
(x+1200, y+600),
(x+800, y+800),
(x, y+800),
(x-400, y+600),
(x-400, y+200),
(x,y),
(x, y+50),
(x-350, y+225),
(x-350, y+575),
(x, y+750),
(x+800, …Run Code Online (Sandbox Code Playgroud)