Tag: 碰撞检测

碰撞准确性

不太确定如何说这个,但我一直在使用 if (CGRectIntersectsRect(ball.frame, bottom.frame)) { [self finish ]; } 对于我的碰撞检测,它完美地运行代码,但球有时会碰撞到底部并运行代码,但是您可以清楚地看到物体之间存在间隙。 我创造了我自己的形象,他们没有背景。 我想知道是否有任何其他的编码方式或使它不运行的代码,直到相交x的像素量彼此的方式。

检测两个图像之间的像素碰撞/重叠

我有两个UIImageView包含一些透明区域的图像。 有没有办法来检查两个图像之间的非透明区域是否碰撞? 谢谢。 [更新]所以这是我到现在为止,不幸的是,它仍然没有工作,但我不明白为什么。 if (!CGRectIntersectsRect(frame1, frame2)) return NO; NSLog(@"OverlapsPixelsInImage:withImage:> Images Intersect"); UIImage *img1 = imgView1.image; UIImage *img2 = imgView2.image; CGImageRef imgRef1 = [img1 CGImage]; CGImageRef imgRef2 = [img2 CGImage]; float minx = MIN(frame1.origin.x, frame2.origin.x); float miny = MIN(frame1.origin.y, frame2.origin.y); float maxx = MAX(frame1.origin.x + frame1.size.width, frame2.origin.x + frame2.size.width); float maxy = MAX(frame1.origin.y + frame1.size.height, […]

SpriteKit错误地检测多个碰撞

我一直在通过一个SpriteKit教程来制作一个Flappy Bird风格的游戏。 我遇到的其中一个问题是错误地触发了碰撞检测代码。 有时候,这是完美的…它击中地面,它发射的方法,当它与地面碰撞。 但是,在看似随机的时候,它会撞到地面,并且以2-6次的距离发射地面碰撞的方法。 屏幕上是否存在其他节点并不重要。 我可以坐下来让它立即放下,有时候我碰到碰撞码正确的跑了一次,其他时候跑了好几次。 这段代码有什么错误导致它做到这一点? 更新:这似乎是两个物体在多个相交点上相遇的地方。 如果对象A在3点与对象B相交,则会发射3次。 你如何防止这样做? – (void)didBeginContact:(SKPhysicsContact *)contact { SKPhysicsBody *firstBody, *secondBody; if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask) { firstBody = contact.bodyA; secondBody = contact.bodyB; } else { firstBody = contact.bodyB; secondBody = contact.bodyA; } if ((firstBody.categoryBitMask & pillerCategory) != 0 && (secondBody.categoryBitMask & flappyBirdCategory) != 0) { [self pillar:(SKSpriteNode *) […]

检测旋转UIViews之间的冲突

我有两个UIViews,其中之一是旋转每0.01秒使用以下代码: self.rectView.transform = CGAffineTransformRotate(self.rectView.transform, .05); 现在,我想知道另一个名为view的UIView是否与rectView相交。 我用这个代码: if(CGRectIntersectsRect(self.rectView.frame, view.frame)) { //Intersection } 但是,你可能知道有一个问题。 这是一个截图: 在这种情况下,检测到碰撞,尽pipe显然他们没有碰触。 我环顾四周,但我似乎无法find真正的代码来检测这种冲突。 如何才能做到这一点? 在这种情况下检测碰撞的工作代码将不胜感激! 或者也许会有比UIView更好的类使用?

检测Swift中两个对象之间的碰撞

碰撞检测在Swift中非常简单 – 但是在这个特定的项目中,碰撞并没有像往常那样触发didBeginContact事件。 这是我的两个身体碰撞清单(使用士兵和子弹): 将SKPhysicsContactDelegate添加到类中。 正确设置physicsWorld,通常是: self.physicsWorld.contactDelegate = self 为每组节点创build类别。 例如let bulletCategory = 0x1 << 0 为每个子弹和士兵创buildSKNodes。 给每个子弹和士兵一个形状匹配的物理机构。 将每个子弹的categoryBitMask设置为bulletCategory (士兵被设置为士兵类别)。 将每个子弹的contactBitMask设置为士兵soldierCategory (士兵设置为bulletCategory)。 定义didBeginContact()处理程序。 以下是我的完整代码。 这是一个至less20行的“Hello World”碰撞。 如果你创build一个新的“游戏”并将其粘贴到GameScene.swift中,它将运行,只是不会触发碰撞事件。 // // GameScene.swift // Thesoldier // // Created by Donald Pinkus on 12/19/14. // Copyright (c) 2014 Don Pinkus. All rights reserved. // import SpriteKit class GameScene: SKScene, […]

iOS – 拖放碰撞检测如何检测您select的项目拖到另一个子视图上?

我们正在添加拖放function,以成为一个运动场的球员。 这些职位使用界面生成器映射出来,每个都是一个单独的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]]; } }

两个图像碰撞时如何生成结束画面?

两幅图像碰撞时如何生成结束画面 我正在用一个非常敏感的计数器来跟一个火柴人做一个应用程序。 所以如果它击中这些尖峰,(UIImages)它将产生结束屏幕。 如何让应用程序检测到这个碰撞,然后生成一个结束画面。

Sprite Kit的“didBeginContact”函数不是很准确。 我该怎么办?

好吧,这里的协议是:我正在开发一个2D的汽车游戏(类似于Hill Climb Racing),用于iOS的Sprite Kit。 我目前正在研究尘埃颗粒,当轮胎碰到一个具有这种效应的表面时就会出现。 为此,我显然需要function“didBeginContact”和“didEndContact”,以便根据轮胎是否接触地面来打开/closures效果。 这是我想要做的: /* —- very dirty pseudocode —- */ didBeginContact { if (contact.bodyA is one of the wheels && contact.bodyB is the surface that should make a dust effect) { engage dust effect } } didEndContact { if (contact.bodyA is one of the wheels && contact.bodyB is the surface that […]

快速检测两个UIView的碰撞

我有两个UIViews在我的ViewController。 我将panGesture添加到第一个视图,当我开始移动这个视图时,第二个视图将会移向第一个视图。 当这两个视图发生冲突时,我想检测一个事件。 这是我的代码。 @IBAction func dragFirstView(sender: UIPanGestureRecognizer) { let translation = sender.translationInView(self.view) dispatch_async(dispatch_get_main_queue()) { () -> Void in UIView.animateWithDuration(2.5, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: { self.secondView.frame = CGRectMake(sender.view!.center.x + translation.x, sender.view!.center.y + translation.y, self.secondView.frame.size.width, self.secondView.frame.size.height) }, completion: nil) } sender.view!.center = CGPoint(x: sender.view!.center.x + translation.x, y: sender.view!.center.y + translation.y) sender.setTranslation(CGPointZero, inView: self.view) }

雪碧套件碰撞检测

嗨,我想在我的游戏中设置碰撞检测,我想添加碰撞检测,所以当气球击中他们stream行的尖峰。 我已经看过Ray Wenderliches教程,但是我无法弄清楚,因为它不适用于我的情况。 任何想法如何设置为我的情况? 钉在屏幕的顶部,气球在底部产卵。