Articles of 碰撞parsing

OBB碰撞分辨率:长矩形抖动

我一直在研究一个物理模拟模块。 几乎一切正常,但我有一个问题,我已经在下面的video中演示。 正如你在video中看到的,如果一个物体没有角速度,那么一切正常。 但是,一旦角速度(即使只是一点点)被施加到物体上并且与地面碰撞,它就开始震动。 我检查碰撞,并使用SAT (分离轴定理)得到正常和MTD(最小平移距离)。 为了得到接触点,我检查两个多边形之间的交点。 如果有多个交点,我就可以find两个交点之间的点。 然后我使用normal,MTD和mass factor来解决重叠的对象。 为了解决这个碰撞,我使用了脉冲理论 。 你有什么想法可能会导致这种摇晃的影响? 这是否可能是由于接触点select错误造成的?

碰撞检测不会注册,直到玩家精灵跳转

我已经在我的游戏中实现了一个射击机制,射击行为也很好。 射击工作是在我的“game1”课上完成的。 出现的问题是当我把子弹和我的敌人(僵尸)碰撞检测。 出于某种原因,我可以整天按拍摄,但没有一个僵尸会识别子弹。 直到我按下我的精灵跳跃,子弹开始注册并杀死僵尸。 而跳跃是我能够正常工作的唯一方法,向左或向右移动并不会做任何事情。 我将在下面发布相关的代码。 僵尸碰撞代码: public void checkBulletCollision(List<Bullet> bullets) { foreach (Bullet b in bullets) { if (BoundingBox.Intersects(b.BoundingBox)) { isAlive = false; b.isVisible = false; bullets.Remove(b); break; } } } 在主游戏文件中拍摄代码: public void UpdateBullets() { foreach (Bullet b in bullets) { b.position.X += 10; if (b.position.X > 1020) b.isVisible = false; } […]

碰撞和列表

我遇到了一个打破我的碰撞的问题。 这是我的方法: 收集input 项目矩形 检查相交并且通过 更新 更新方法建立在object_position * seconds_passed * velocity * speed 。 input改变速度,如果> 1,则被标准化。 这种方法只用一个对象进行比较就行,但是我将一个列表或一个for循环传递给碰撞检测器,当列表碰到一个通过testing的对象并且对象可以通过时,速度变回非零。 任何解决scheme将不胜感激。 旁注是否有更适当的方法来模拟运动?

如何实现这个碰撞检测function?

我想知道如何实现这个碰撞检测function,但我甚至不知道它是什么。 input形状是二维凸多边形,可选“圆化半径”:想象在多边形的每个顶点上放一个圆,然后填充它们之间的区域。 我已经有一个使用SAT来判断它们是否相交的函数(并且返回一个最小修正向量),但是我也需要一个函数,它带有两个这样的形状A和B以及一个单位方向向量。 它应该告诉A如果沿着方向移动,A是否会触碰B,如果是,报告它可以移动多远,表面正常他们将触摸的地方。 那么如何实现,或者至less是如何调用,所以我可以search提示?

如何保持矩形内的形状?

所以我正在做一个基于随机生成的房间的游戏,我需要一种方法来保持玩家的内心,让玩家在与房间的边界碰撞时滑行。 我目前有一个SATalgorithm来检测碰撞,但我不知道如何做在室内的碰撞分辨率。 完整代码在这里 sf::Vector2f Collision::GetMtv() { return (Mtv(small, smallestPerpendicular[smallestIndex])); }

如何使TMXTiledMap响应?

我一直在努力与Cocos2d-x(C ++),最后我达到了我觉得或多或less舒适的点。 我的游戏是一款基于2D的车型,拥有直线无限的地图,我终于可以添加一些随机障碍物。 只有3个位置的汽车可以在,一切工作正常。 重点是我最近注意到它没有响应,并试图通过添加一个这样的行到AppDelegate.cpp使其响应 : glview->setDesignResolutionSize(1024.0, 600.0, kResolutionFixedWidth); 我试图使用kResolutionFixedWidth , kResolutionFixedHeight和所有其他5个variables,你可以放在那里,但我只有屏幕上的黑线和每一个单一的屏幕崩溃,你可以想象的 – “ – 我可以找出我需要手动调整我的TMXTiledMap因为瓦片的性质(我做了瓦片),但我不知道如何面对这个问题。 请注意,我目前正在开发一款1024×600的Android设备,但我希望至less支持平板电脑和智能手机最常见的分辨率。 在此先感谢任何能以某种方式帮助我的人。

AABB冲突解决问题

我试图让一个角色与一些平铺的地形相撞。 我在碰撞解决方面遇到了问题,在黑暗的ant拍摄日子没有在网上find任何相关的帮助之后,我并没有接近碰撞解决scheme。 我可以检测到玩家是否与瓦片发生碰撞 ,但我无法弄清楚如何正确解决碰撞。 我已经是这样了,只有在没有向下方向的碰撞的情况下才会使用重力,我已经设定了适当的速度分辨率,所以如果我与地面碰撞,我没有经过它,但我仍然如果以高速运行,则会在瓦片中出现几个像素,并且由于某种原因,如果我与沿着x轴(地板和天花板)的法线相碰撞,则会判定我也在左边发生碰撞,而且我也不会碰到垂直的墙壁。 我应该注意到我正在使用MonoGame 3.4。 物理更新字符的代码 public void Update() { Position += Velocity * TimeHandler.DeltaTime; //TODO: add tile collision based on the entity.world property var tiles = entity.World.Tiles; int minTileX = (int)Math.Floor (Bounds.MinX); int maxTileX = (int)Math.Ceiling (Bounds.MaxX); int minTileY = (int)Math.Floor (Bounds.MinY) – 1; int maxTileY = (int)Math.Ceiling (Bounds.MaxY) – 1; bool […]

多input碰撞粘性问题

我一直在尝试几天来解决自上而下的二维碰撞问题,只要我碰到有相邻可碰瓷砖的贴砖,我的玩家就会贴在墙上,如果我碰撞到右边或者左边,我可以不能向上或向下移动,对于Y轴也是一样的,从顶部或底部碰撞时我不能左右移动。 下面是一张照片来表示我的问题: 灰色框代表碰撞区域。 这是我的代码: Rectangle tileRect = new Rectangle((int)tile.Position.X, (int)tile.Position.Y, tile.SourceRect.Width, tile.SourceRect.Height); Vector2 temporaryPlayerPosition = player.Sprite.Position – player.Velocity; if (player.CollisionBox.Intersects(tileRect)) { if ((player.CollisionBox.Right >= tileRect.Left && player.CollisionBox.Right < tileRect.Right) || (player.CollisionBox.Left <= tileRect.Right && player.CollisionBox.Right > tileRect.Left)) { player.CollisionBox.X = (int)temporaryPlayerPosition.X; player.Sprite.Position.X = temporaryPlayerPosition.X; } if ((player.CollisionBox.Bottom >= tileRect.Top && player.CollisionBox.Bottom < tileRect.Bottom) || (player.CollisionBox.Top […]

解决与多个对象的碰撞

我已经实施了碰撞检测和MTV计算的SAT,当我的角色只与一个对象碰撞时,它完全正常工作。 但是可能会同时碰撞多个对象。 我如何处理这种情况? 如何使用所有计算的MTV评估字符转换? 我的代码目前看起来如何的伪代码: // Contains objects collision with which was detected during broadphase list<collider> overlappingObjects; // Collider for the character for which I'm trying to solve the collision collider characterCollider; response res; vec3 translation; for(collider in overlappingObjects){ // test if they actally collide and put collision information in `res` if they do if(testCollision(characterCollider, […]

使用每像素碰撞来获得弹性响应

我意识到这可能是开放式的结束,但好奇,如果我只是做了一些杀死… 我有这个 http://xbox.create.msdn.com/en-US/education/catalog/tutorial/collision_2d_perpixel 我重写了它在XNA中的animation代码,而不是。 它运作良好,但是现在我想用这个来决定是否发生碰撞,并且让物品(人物)弹性地反弹。 是每像素太多,我可以只使用边界框? (事实上​​,对于弹性碰撞的反应中需要计算的东西而言,这是首选) 真的寻找指导。