在Scratch中,感知类别中存在称为触摸的条件,其可以具有边缘作为参数.
鉴于条件返回true,我如何判断哪个边被触摸(即场景的顶部,底部,左侧或右侧边缘)?
或者:如何分辨场景的尺寸?我已经算出位置(x = 0,y = 0)位于场景的中间.四个角点在哪里?
我在哪里可以阅读更多关于游戏的基本2d碰撞检测或只是具有一些交互性的应用程序?
编辑:Canvas游戏的javascript怎么样?
我们正在添加拖放功能,以便成为一个有球员位置的运动场.
使用Interface Builder映射出位置,每个位置都是一个单独的UIImageView.
我们希望能够将玩家图像从屏幕一侧的工作台位置拖动到场地上的位置.
我们如何最好地检测被移动的所选玩家何时与现有的gamePosition imageView碰撞?
我们正在寻找一种方法来检测当前位置下是否存在视图或ImageView.
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
tile1.center = location;
if gamePositionExistsAtCurrentLocation(location) { //want something like this
[tile1 setBackgroundColor:[UIColor blueColor]];
} else {
[tile1 setBackgroundColor:[UIColor yellowColor]];
}
}
Run Code Online (Sandbox Code Playgroud) 我正在努力找到一个坚如磐石的解决方案来检测圆圈和圆弧段之间的碰撞.想象一下游戏敌人的视野锥,圆圈代表感兴趣的物体.
底部的图表是我试图找出一些可能的情况,但我相信还有更多.
我了解如何快速exlude极端的情况下,我放弃不跟整个圈子碰撞的任何目标,任何情况下,主循环的中心目标圆圈内有自动真(E图中).
我正在努力寻找一种检查其余案例的好方法.我已经尝试比较圆心和段外线的终点之间的距离,并且我已经尝试从主圆的中心计算目标圆的中心角度并确定它是否在段内,但似乎都没有抓住所有情况.
具体而言,似乎去时髦如果目标圆圈是接近中心但不接触(E和B下面之间的某处),或者如果该段是比目标圆变窄(使得中心是段,但两个边缘内它在外面).
这样做有可靠的方法吗?
额外信息:段由位置P,方向O(其大小为圆半径)和视图大小S描述.
迄今为止我最成功的尝试涉及确定向量ca1和ca2的角度,并检查它们中的任何一个是否位于向量a1和a2的角度之间.这适用于如上所述的某些情况,但不适用于目标圆大于分段的情况.
编辑2 在实施下面的最佳建议后,仍然存在误报,我不确定如何最好地消除.请参见下面的粉色图表.右下角的圆圈报告为与段相撞,因为它的边界与半圆和主圆重叠.


在发现另一个边缘案例(第四张图片)后,我已经确定了一种方法,它结合了下面的两个顶部答案,似乎涵盖了所有基础.我会在这里为了跟随者而描述它.
首先排除任何未通过快速循环测试的内容.
然后测试圆与段的两个外线之间的碰撞.如果它接触到,则返回true.
最后,使用圆心和两条外线进行几个点到半空间测试(如下面的Gareth所述).如果它通过了它们的两个,否则返回false.
algorithm geometry trigonometry collision-detection game-physics
我需要物理引擎来模拟服务器上的游戏世界.我用Google搜索了.Net物理引擎,它们都是在2006 - 2009年发布的.那么我可以使用任何好的物理引擎吗?
我需要的是发动机箱体,球体碰撞......
更新:对不起忘了提到我需要3d引擎
更新:如果有人需要托管物理引擎看看Jitter,它是纯粹的托管和来自JigLibX的开发人员
检测红色矩形是否与黑色多边形重叠的最佳方法是什么?请参考此图片:

在Libgdx中有一种方法可以验证Polygon和Circle之间的碰撞吗?
我看到了这个Intersector类,但只发现了Circle和Rectangle的碰撞测试.那么其他任何多边形呢?
如果我需要手动完成,使用Libgdx最好的方法是什么?
我正在为HS的最后一年项目制作平台游戏.然而......我使用的碰撞检测系统基本上是关于检查字符的特定部分是否与另一个块相交.
碰撞似乎工作得很好,除了它会导致一些错误,例如玩家在从侧面撞击时卡住或减速或在使用上键和<或>键时被抛出.
我的问题是; 如何改进碰撞代码以避免这种故障并发生"滑溜"碰撞?
这是我想要实现的那种碰撞效果:
(https://i.imgur.com/KB1M3bt.mp4)

(https://i.imgur.com/I44fmPc.mp4)

这里是边界看起来的预览
这里是游戏中实际外观的预览(点击查看更好的质量)
我用于碰撞检测的代码:(tempObject是玩家与之交叉的块)
if(getBoundsTop().intersects(tempObject.getBoundsBottom())){
y = tempObject.getY() + height;
velY = 0;
System.out.println("Top collision");
}
if(getBoundsBottom().intersects(tempObject.getBoundsTop())){
y = tempObject.getY() - height;
velY = 0;
falling = false;
jumping = false;
//isOnBlock = true;
} else {
falling = true;
//isOnBlock = false;
}
if(getBoundsRight().intersects(tempObject.getBoundsLeft())){
x = tempObject.getX() - this.width;
}
if(getBoundsLeft().intersects(tempObject.getBoundsRight())){
x = tempObject.getX() + this.width;
}
Run Code Online (Sandbox Code Playgroud)
这是绑定的方法:
public Rectangle getBounds() { return new Rectangle( (int)x, (int)y, …Run Code Online (Sandbox Code Playgroud) 我正在尝试寻找其他注册冲突的方法(除了OnCollisionEnter()和之外OnCollisionExit()).我目前正在使用Physics.OverlapBox(),但我需要有关碰撞的更多信息; 即,正常,点.
我可以使用Physics.BoxCast(),但问题是它移动一个给定距离的盒子,使用maxDistance = 0f将无法工作.
我需要一种检查碰撞类似的方法,Physics.OverlapBox()除了它还会返回有关转换中所有碰撞的信息.
任何帮助表示赞赏.谢谢.
algorithm ×2
c# ×2
geometry ×2
java ×2
.net ×1
game-physics ×1
ios ×1
iphone ×1
libgdx ×1
math ×1
mit-scratch ×1
physics ×1
polygon ×1
server-side ×1
trigonometry ×1