天道酬勤,学无止境

collision-detection

Actionscript 3.0 Flash 中精灵的碰撞检测(Collision Detection of Sprites in Actionscript 3.0 Flash)

问题 我正在 AS3.0 中制作一个类似 achtung die 的游戏。 到目前为止,我已经完成了 4 个不同玩家的动作,效果还不错。 我现在要进行碰撞检测,以测试“蠕虫”——可以这么说,是否与彼此或它自己的尾巴发生碰撞。 据我了解,如果我使用 hitTestObject(); 它将使用整个对象的注册区域,这将是一个巨大的问题,因为此注册进行了包含所有对象的 4 面注册。 所以如果使用它,它会通过进入这个矩形而不是撞击实际的蠕虫来“碰撞”。 这是否正确理解? 我一直在寻找不同的碰撞检测方法,但似乎无法为我的项目找到最佳方法。 我的想法是检查“蠕虫”是否在白色背景上绘制它们的新精灵。 如果不是,那么它一定是撞到了什么东西。 您可以在此处查看我如何使用我的代码:以 .as 格式链接到 .fla 文件的代码 抱歉我的问题表述不当,希望它有点道理。 任何帮助是极大的赞赏!! 最好的问候 - 杰斯珀 回答1 如果您想要具有高效 CPU 使用率的像素完美碰撞检测,请尝试此功能: trace("Collided: " + (areaOfCollision(mc1, mc2) != null)); trace("Where: " + areaOfCollision(mc1, mc2)); function areaOfCollision(object1:DisplayObject

2021-12-08 13:05:06    分类:技术分享    actionscript-3   flash   collision-detection

如何在一组 Div 元素之间实现碰撞检测?(How do I implement collision detection between a set of Div elements?)

问题 我在 jsfiddle 中有这个例子 我有一个 var 作为碰撞元素: var $div = $('.container'); 然后是碰撞: function test (){ $('.drag') .drag("start",function( ev, dd ){ dd.limit = $div.offset(); dd.limit.bottom = dd.limit.top + $div.outerHeight() - $( this ).outerHeight(); dd.limit.right = dd.limit.left + $div.outerWidth() - $( this ).outerWidth(); }) .drag(function( ev, dd ){ $( this ).css({ top: Math.min( dd.limit.bottom, Math.max( dd.limit.top, dd.offsetY ) ), left: Math.min( dd.limit.right, Math.max( dd.limit.left, dd.offsetX ) ) }); }); } 为了: <div class="container"></div> <div class="drag xxx" style="left:40px;"></div>

2021-12-08 08:31:21    分类:技术分享    jquery   collision-detection

如何检测webgl中的碰撞?(How to detect collision in webgl?)

问题 如何在不使用诸如three.js之类的任何库的情况下检测webgl中的冲突? 回答1 如何检测webgl中的碰撞 你没有。 WebGL 和 OpenGL 一样只用于绘图。 它不管理场景,它没有“对象”或诸如碰撞之类的高级事物的概念。 这都是关于点、线、三角形和着色器的。 任何与场景管理或碰撞相关的东西都不属于 WebGL(和 OpenGL)的范围。 回答2 一种在 GPU 上进行光线碰撞检测的简单方法。 查看以下有关该主题的博客文章。 http://blog.xeolabs.com/ray-picking-in-scenejs 主要思想是使用保存对象 ID 而不是颜色的着色器将场景渲染到纹理(使用 FBO)。 然后,您可以非常快速地在此纹理中进行查找,以查看光线与哪些物体发生碰撞。 回答3 从星期天开始,我试图解决同样的问题。 尽管 www 中有很多信息,但我无法在我的示例程序中使用它。 一旦我解决了它,我会在这里发布我的例子。 我的最后一次尝试是将 glu-unProject 端口用于 webGL。 这个需要以下参数: 函数(winX、winY、winZ、模型、项目、视图、objPos) 我试图直接从我的场景绘制函数中调用这个函数以进行测试。 var pMatrix = new mat4.ortho(iL, iR, iB, iT, fNearZ, farZ); var

2021-12-08 07:37:19    分类:技术分享    javascript   opengl-es   collision-detection   webgl

如何检测旋转的矩形何时相互碰撞(How to detect when rotated rectangles are colliding each other)

问题 在多次看到这个问题并用旧的(不可用的)代码回答之后,我决定重做所有事情并发布它。 矩形定义为: center : x和y代表他的位置(记住 0;0 是左上角,所以 Y 向下) size : x和y表示他的大小他的旋转angle (以度为单位,0 度跟随轴 OX 并顺时针旋转) 目标是知道 2 个矩形是否发生碰撞。 回答1 将使用 Javascript 来演示此操作(并提供代码),但我可以按照流程对每种语言进行操作。 链接 Codepen 上的最终演示 GitHub 存储库 概念 为了实现这一点,我们将在另一个矩形 2 轴(X 和 Y)上使用角投影。 只有当一个矩形上的 4 个投影撞击其他矩形时,这两个矩形才会发生碰撞: 矩形橙色 X 轴上的矩形蓝色角矩形橙色 Y 轴上的矩形蓝色角矩形蓝色 X 轴上的矩形橙色角矩形蓝色 Y 轴上的矩形橙色角 过程 1- 找到矩形轴 首先为轴 0;0(矩形的中心)到 X(OX)和 Y(OY)创建 2 个向量,然后旋转它们以与矩形轴对齐。 维基百科关于旋转二维向量 const getAxis = (rect) => { const OX = new Vector({x:1, y:0}); const OY = new Vector({x:0, y:1}); // Do not forget to transform degree to radian

2021-12-05 19:53:34    分类:技术分享    javascript   math   geometry   collision-detection   rectangles

检测div冲突?(Detecting div collision?)

问题 这就是我现在正在做的事情: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> <meta name="generator" content="TextMate http://macromates.com/"> <style type="text/css" media="screen"> body { font-family:"HelveticaNeue-Light"; margin: 0px; } input { width: 75%; } #wrap { background: #f1f1f1; border: 1px solid #d9d9d9; padding: 0px; } /* #sprite { position: relative; background: #909090; width: 20px; height: 20px; padding: 20px; }*/ #spriteChatBubble {

2021-12-05 08:16:07    分类:技术分享    jquery   css   html   collision-detection

向迷宫墙添加碰撞[重复](Adding collision to maze walls [duplicate])

问题 这个问题在这里已经有了答案: 如何防止玩家在 pygame 的迷宫中穿过墙壁? (3 个回答) 3 个月前关闭。 有人可以帮我向精灵添加碰撞点吗? 我有一个过去的代码,我在图像上分层了位图,但相同的代码不能很好地集成物理绘制线条而不是检测图像上的黑色/灰色位置 import random import pygame pygame.init() WHITE = (255,255,255) GREY = (20,20,20) BLACK = (0,0,0) PURPLE = (100,0,100) RED = (255,0,0) size = (701,701) screen = pygame.display.set_mode(size) pygame.display.set_caption("Maze Generator") done = False clock = pygame.time.Clock() width = 25 cols = int(size[0] / width) rows = int(size[1] / width) stack = [] pos = (0,0) class Player(pygame.sprite.Sprite): def __init__(self, image, pos, background): super().__init__()

2021-12-05 02:36:12    分类:技术分享    python   pygame   collision-detection   maze

检测是否在 Cocos2d-iphone 上触摸了特定的精灵(Detecting if a specific sprite was touched on Cocos2d-iphone)

问题 我正在按照 Ray 的教程制作一个简单的 iPhone 游戏(这里:http://goo.gl/fwPi),并决定我希望敌人在被触碰时被消灭。 我最初的方法是在触摸位置生成一个小的 CCSprite 精灵,然后使用 CGRectMake 创建该精灵的边界框以检测是否触摸了敌人的精灵。 就像雷对射弹/敌人所做的一样。 但是,当然,我的方法行不通,我不能把自己从这个洞里挖出来。 这是相关的代码片段。 任何帮助表示赞赏: - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { // Choose one of the touches to work with UITouch *touch = [touches anyObject]; CGPoint location = [self convertTouchToNodeSpace: touch]; location = [[CCDirector sharedDirector] convertToGL:location]; CCSprite *touchedarea = [CCSprite spriteWithFile:@"Icon-72.png" rect:CGRectMake(location.x, location.y, 2, 2)]

2021-12-02 10:04:03    分类:技术分享    iphone   objective-c   cocos2d-iphone   collision-detection

检测是否在 Cocos2d-iphone 上触摸了特定的精灵(Detecting if a specific sprite was touched on Cocos2d-iphone)

问题 我正在按照 Ray 的教程制作一个简单的 iPhone 游戏(这里:http://goo.gl/fwPi),并决定我希望敌人在被触碰时被消灭。 我最初的方法是在触摸位置生成一个小的 CCSprite 精灵,然后使用 CGRectMake 创建该精灵的边界框以检测是否触摸了敌人的精灵。 就像雷对射弹/敌人所做的一样。 但是,当然,我的方法行不通,我不能把自己从这个洞里挖出来。 这是相关的代码片段。 任何帮助表示赞赏: - (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { // Choose one of the touches to work with UITouch *touch = [touches anyObject]; CGPoint location = [self convertTouchToNodeSpace: touch]; location = [[CCDirector sharedDirector] convertToGL:location]; CCSprite *touchedarea = [CCSprite spriteWithFile:@"Icon-72.png" rect:CGRectMake(location.x, location.y, 2, 2)]

2021-12-02 10:01:15    分类:技术分享    iphone   objective-c   cocos2d-iphone   collision-detection

Swift Spritekit 我检测到碰撞但它多次读取碰撞(Swift Spritekit I detect a collison but it reads the collision mulitple times)

问题 AppImage 我有一堵由 4 个不同颜色的矩形组成的墙,要穿过墙,球的颜色必须与墙上矩形的颜色相匹配。 球将穿过墙壁,并且会出现一堵新墙。 但是,当我检测到这种碰撞时,我会得到多个碰撞读数。 我已经通过打印死或活的方式对此进行了测试,并且它会同时打印或多次打印。 func didBegin(_ contact: SKPhysicsContact) { if let nodeA = contact.bodyA.node as? SKShapeNode, let nodeB = contact.bodyB.node as? SKShapeNode { if nodeA.fillColor != nodeB.fillColor { print("DEAD") } else { print("Alive") } } } 请帮忙!!! 回答1 是的 - 这发生了。 处理它的方法(在某些情况下,您不能让 sprite-kit 多次调用didBegin )是确保您的联系代码适应这一点,并且多次处理合同不会导致问题(例如添加多次得分,删除多个生命,尝试访问已删除的节点或 PhysicsBody 等)。 这里有一个讨论:Sprite-Kit registering multiple conflicts for single contact 您可以做的一些事情包括: 如果您删除联系的节点

2021-12-01 17:44:05    分类:技术分享    swift   sprite-kit   collision-detection

碰撞检测(collision detection)

问题 大家好,我如何在我的应用程序中进行“碰撞检测”,就像这样:http://www.gskinner.com/blog/assets/CDTest.swf 请给我一些建议,请... 回答1 看看CGRectContainsPoint和CGRectIntersectsRect 。

2021-11-30 05:19:07    分类:技术分享    iphone   collision-detection