我想在同一行中检测两次碰撞检测.
例如:-(见下图)
椭圆和矩形或有缺陷.之后我的椭圆将沿直线路径向下行进并检测另一个矩形.
第一个是(在轨迹路径上行进)工作正常.第二个我想通过直线向下传递以进行碰撞检测.
怎么做这个过程.

有没有人知道任何优秀的Java游戏引擎?我想要一个至少试图保持最新的人.我尝试使用JGame,但它没有我要求的灵活性.我尝试使用Slick2D,但它没有为碰撞检测提供简单的解决方案.相反,大多数人建议你循环遍历所有实体并检查你是否以这种方式进入另一个对象,但当你计划拥有几个敌人,边界,子弹时,O(n)似乎是一种非常非常可怕的方式.飞到处......
此外,Slick2D的创建者几乎不再更新,Wiki中的许多教程甚至都没有完成.我不是在责怪他,我明白当你没有时间时会有什么样的感觉,但肯定有一个框架就像我在寻找什么?
我正在开发一个简单的基于图块的2D游戏.我有一个级别,填充了可以与瓷砖互相交互的对象.检查与tilemap的碰撞是相当容易的,并且可以对具有线性复杂性的所有对象进行.但现在我必须检测对象之间的碰撞,现在我必须检查每个对象与其他所有对象,这会导致方形复杂性.
我想避免方形复杂性.是否有任何众所周知的方法来减少对象之间的冲突检测调用.是否存在任何数据结构(如BSP树),它们易于维护并允许一次拒绝许多冲突.
例如,关卡中的对象总数约为500,其中大约50个一次在屏幕上显示...
谢谢!
我一直在尝试使用机器人Opengl代表一些移动/旋转物体.现在我想让他们碰撞并做出现实回应.
研究这个问题,我可以找到许多资源,告诉我如何确定两个3d形状是否在当前帧中发生碰撞(或者它们是否会在下一帧中发生碰撞).但是,我无法找到描述如何获取有关已发生冲突的信息的资源.
例如,使用凸形,我想知道哪个顶点首先与哪个平面相撞,在帧之间的什么时间.这样我就可以知道每个形状应该如何响应它的位置和旋转.
我可以描述每个顶点与光线的运动,以及每个帧之间的平面运动.然而,我有点难过,因为我将如何使用它来找到他们未来的交叉点,以及这是否有可能时间效率明智.我已经阅读了一些减少复杂计算需求的方法,比如octtree和hit box.
我对这个话题相当新,所以任何资源或关于如何处理这些问题的建议都会受到赞赏.感谢您的时间!
我按照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)
但是,有时我的球可能粘在一起(重叠).
在这个例子中没有发生同样的情况.
为什么?
我需要为每个球开始一个线程吗?
试图创建一个2D游戏,我需要一个精确对称的2D多边形对撞机,所以我想用手/数字设置坐标,而不是使用鼠标.
如何才能做到这一点?
我想游戏可以在启动时调整坐标,但如果可能的话,我宁愿让它们正确的"设计时间".此外,如果我要在启动时以编程方式执行此操作,我会感谢您提供了一个方法或合适的链接来帮助解决这个问题.
我正在研究等距游戏引擎,并且已经为像素完美点击检测创建了算法.访问该项目并注意到点击检测能够检测到点击了哪个边缘.它还会检查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是瓷砖宽度的一半来裁剪红色区域
Tile.prototype.topContainsMouse = …Run Code Online (Sandbox Code Playgroud) 当一个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次反弹的方法.
我正在戈多中制作游戏,但我不知道可以使用什么代码来创建死亡平面(一个实体经过并消失或死亡的区域)。
android ×2
java ×2
algorithm ×1
click ×1
collision ×1
game-engine ×1
game-physics ×1
godot ×1
ios ×1
iphone ×1
isometric ×1
javascript ×1
objective-c ×1
physics ×1
sprite-kit ×1
swift ×1
xcode ×1