标签: collision-detection

cocos2d中的碰撞检测

我想在同一行中检测两次碰撞检测.

例如:-(见下图)

椭圆和矩形或有缺陷.之后我的椭圆将沿直线路径向下行进并检测另一个矩形.

第一个是(在轨迹路径上行进)工作正常.第二个我想通过直线向下传递以进行碰撞检测.

怎么做这个过程.

替代文字

iphone xcode objective-c collision-detection cocos2d-iphone

10
推荐指数
1
解决办法
2912
查看次数

Java游戏引擎

有没有人知道任何优秀的Java游戏引擎?我想要一个至少试图保持最新的人.我尝试使用JGame,但它没有我要求的灵活性.我尝试使用Slick2D,但它没有为碰撞检测提供简单的解决方案.相反,大多数人建议你循环遍历所有实体并检查你是否以这种方式进入另一个对象,但当你计划拥有几个敌人,边界,子弹时,O(n)似乎是一种非常非常可怕的方式.飞到处......

此外,Slick2D的创建者几乎不再更新,Wiki中的许多教程甚至都没有完成.我不是在责怪他,我明白当你没有时间时会有什么样的感觉,但肯定有一个框架就像我在寻找什么?

java collision-detection game-engine

10
推荐指数
1
解决办法
3653
查看次数

避免碰撞检测的O(n ^ 2)复杂度

我正在开发一个简单的基于图块的2D游戏.我有一个级别,填充了可以与瓷砖互相交互的对象.检查与tilemap的碰撞是相当容易的,并且可以对具有线性复杂性的所有对象进行.但现在我必须检测对象之间的碰撞,现在我必须检查每个对象与其他所有对象,这会导致方形复杂性.

我想避免方形复杂性.是否有任何众所周知的方法来减少对象之间的冲突检测调用.是否存在任何数据结构(如BSP树),它们易于维护并允许一次拒绝许多冲突.

例如,关卡中的对象总数约为500,其中大约50个一次在屏幕上显示...

谢谢!

complexity-theory collision-detection

10
推荐指数
2
解决办法
1885
查看次数

碰撞检测和碰撞响应

我一直在尝试使用机器人Opengl代表一些移动/旋转物体.现在我想让他们碰撞并做出现实回应.

研究这个问题,我可以找到许多资源,告诉我如何确定两个3d形状是否在当前帧中发生碰撞(或者它们是否会在下一帧中发生碰撞).但是,我无法找到描述如何获取有关已发生冲突的信息的资源.

例如,使用凸形,我想知道哪个顶点首先与哪个平面相撞,在帧之间的什么时间.这样我就可以知道每个形状应该如何响应它的位置和旋转.

我可以描述每个顶点与光线的运动,以及每个帧之间的平面运动.然而,我有点难过,因为我将如何使用它来找到他们未来的交叉点,以及这是否有可能时间效率明智.我已经阅读了一些减少复杂计算需求的方法,比如octtree和hit box.

我对这个话题相当新,所以任何资源或关于如何处理这些问题的建议都会受到赞赏.感谢您的时间!

android collision-detection

10
推荐指数
1
解决办法
2186
查看次数

球碰撞:球粘在一起

我按照http://www.emanueleferonato.com/2007/08/19/managing-ball-vs-ball-collision-with-flash/上的示例在Android上创建球碰撞,
我的代码组织如下:

int N = 6; // number of balls
for (int i=0; i<N; i++) {
    // move ball
    // as in line 10~39

    // collision detection
    for(int j=i+1; j<N; j++) {
        // as in line 66~77
    } // end for
} // end for
Run Code Online (Sandbox Code Playgroud)

但是,有时我的球可能粘在一起(重叠).
在这个例子中没有发生同样的情况.
为什么?
我需要为每个球开始一个线程吗?

android collision-detection

10
推荐指数
1
解决办法
1522
查看次数

如何修复碰撞响应中的圆和矩形重叠?

由于在数字世界中几乎不会发生真正的碰撞,因此我们总会遇到"碰撞"圆与矩形重叠的情况.

如何在不与重叠的矩形完美碰撞的情况下放回圆圈?

假设矩形停止(零速度)并且轴对齐.

我会用后验方法(二维)解决这个问题.

总之,我必须解决t的这个等式:

在此输入图像描述

哪里:

  • Ť 是一个回答问题的数字:碰撞发生了多少帧之前?

  • [R 是圆的半径.

  • (x,y) 是圆的中心

  • (vx,vy) 是它的速度.

  • 在)B(t)的 是返回圆和矩形碰撞的点的x和y坐标的函数(当圆圈处于时 (x  -  t*vx,y  -  t*vy) 位置,即处于与矩形完美碰撞的位置).

最近我解决了圆圈之间碰撞的类似问题,但现在我不知道函数A和B的定律.

java physics collision-detection collision game-physics

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

手动编辑Unity3D对撞机坐标?

试图创建一个2D游戏,我需要一个精确对称的2D多边形对撞机,所以我想用手/数字设置坐标,而不是使用鼠标.

如何才能做到这一点?

我想游戏可以在启动时调整坐标,但如果可能的话,我宁愿让它们正确的"设计时间".此外,如果我要在启动时以编程方式执行此操作,我会感谢您提供了一个方法或合适的链接来帮助解决这个问题.

collision-detection unity-game-engine unity3d-2dtools

10
推荐指数
1
解决办法
5897
查看次数

提高交错列等距网格上的点击检测性能

我正在研究等距游戏引擎,并且已经为像素完美点击检测创建了算法.访问该项目并注意到点击检测能够检测到点击了哪个边缘.它还会检查y-index以单击最前面的磁贴.

我当前算法的解释:

等距网格由100*65px的平铺图像组成. TileW=100, TileL=50, tileH=15

瓷砖尺寸

地图由三维数组表示map[z][y][x].

平铺中心点(x,y)的计算如下:

//x, y, z are the position of the tile

if(y%2===0) { x-=-0.5; }    //To accommodate the offset found in even rows
this.centerX = (x*tileW) + (tileW/2);
this.centerY = (y*tileL) - y*((tileL)/2) + ((tileL)/2) + (tileH/2) - (z*tileH);
Run Code Online (Sandbox Code Playgroud)

等距网格

用于确定鼠标是否位于磁贴上给定区域内的原型函数:

Tile.prototype.allContainsMouse = function() {
    var dx = Math.abs(mouse.mapX-this.centerX),
        dy = Math.abs(mouse.mapY-this.centerY);

    if(dx>(tileW/2)) {return false;}    //Refer to image
    return (dx/(tileW*0.5) + (dy/(tileL*0.5)) < (1+tileHLRatio));
}
Run Code Online (Sandbox Code Playgroud)

Tile.prototype.allContainsMouse()如果鼠标在绿色范围内,则返回true.通过检查dx是瓷砖宽度的一半来裁剪红色区域

图1


Tile.prototype.topContainsMouse = …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm click collision-detection isometric

10
推荐指数
1
解决办法
1327
查看次数

找到弹跳SKSpriteNode将采用的路径

当一个SKSpriteNode在屏幕上反弹时,我想显示两条线 - 一个是节点前进的地方,第二个是节点从其他sprite节点反弹的方向.

基本上,我想做这样的事情:

在此输入图像描述

我可以使用球的速度相当容易地创建第一行,第二行也相当容易,但前提是我知道线将与另一个SKSpriteNode碰撞的位置.

对于第一行,我正在创建一个SKShapeNode,并将其路径设置为与球的速度相同的线,但我不确定如何找到球从最近的障碍物反弹后所采取的路径.

简而言之 - 如何找到移动物体与另一个物体碰撞的点,然后找到它与物体碰撞后移动的方向?如果我知道它会碰到什么物体,但这不是一个问题,但是不能做一些非常低效的暴力破坏,我不知道如何找到球将要碰撞的物体以及在哪里.

我正在寻找这样的东西:

let line: SKSpriteNode // this is the first line
let scene: SKScene // the scene that contains all of the objects

// this doesn't exist, but I'm looking for something that would do this
let collisionPoint: CGPoint = line.firstCollision(in: scene)
Run Code Online (Sandbox Code Playgroud)

就我的目的而言,精灵上没有环境因素(没有重力,空气阻力等),它以恒定速度移动,并且不会在篮板中失去任何速度,但如果答案可能包括一种计算任何环境中精灵的第n次反弹的方法.

collision-detection ios sprite-kit swift

10
推荐指数
1
解决办法
151
查看次数

如何检测 Godot 中的碰撞?

我正在戈多中制作游戏,但我不知道可以使用什么代码来创建死亡平面(一个实体经过并消失或死亡的区域)。

collision-detection godot

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