jjzjj

didBeginContact

全部标签

ios - Sprite Kit didBeginContact 未在 body 和 edgeRect 之间调用

我有一个游戏,我可以将body从屏幕上弹开。我想检测这些物体何时接触到屏幕的边缘(仍然让物体穿过屏幕)并且我已经实现了所有内容但仍然无法正常工作..这是我的代码:游戏场景.htypedefNS_OPTIONS(uint32_t,FAPhysicsCategory){FAWallCategory=1GameScene.m-(void)setupWorldPhysics{//Setworldgravityself.physicsWorld.gravity=CGVectorMake(0.0,-5.0);floatbottomOffset=400.0;CGRectnewFrame=CGRect

IOS sprite 套件 didBeginContact 未调用

请帮助我,我已经尝试解决这个问题24小时了,我快要疯了:)我试图通过didBeginContact委托(delegate)方法检测SpriteKit中的碰撞,但是这个方法没有触发,网上的答案我都试过了#import"MyScene.h"#import"GameOverScene.h"staticconstuint32_tbasketCategory=1//@interfaceMyScene()@propertyBOOLcontentCreated;@property(nonatomic)SKSpriteNode*basket;@property(nonatomic)SKSpriteNo

ios - didBeginContact() 在接触发生之前被调用

我有两个sprite节点,我已确保self.size和它们各自的物理体的大小相同,但我仍然遇到这样一个非常奇怪的行为:这张照片是在检测到碰撞时拍摄的,我暂停了场景。为什么会这样?这里是设置不同大小的代码:在我的Player类(循环节点)的init()中:super.init(texture:texture,color:color,size:CGSize(width:100,height:100))然后:self.physicsBody=SKPhysicsBody(circleOfRadius:self.size.width/2,center:self.position)

swift - didBeginContact 未调用

我正在制作一个需要我的spriteNodes发生碰撞的游戏。我遵循了一个教程,但它对我不起作用。当我运行我的游戏并且两个对象发生碰撞时,输出监视器中没有println("beginContact"),因此没有调用didBeginContact函数。overrideinit(size:CGSize){super.init(size:size)player.planeSprite=SKSpriteNode(imageNamed:"plane5")player.planeSprite.physicsBody?=SKPhysicsBody(rectangleOfSize:player.plan

swift - 如何在没有 SKTexture 的情况下更改 didBeginContact 中的 SKSpriteNode 大小和颜色?

我一直在使用SKTexture按以下方式在didBeginContact中更改SKSpriteNode的颜色和大小。iffirstBody.categoryBitMask==spriteCategory&&secondBody.categoryBitMask==enemyCategory{varnewSprite=firstBody.nodeletnewImage=SKTexture(imageNamed:"newSprite.png")(newSpriteas?SKSpriteNode)?.size=newImage.size()//magicoldToNewSpriteAction

swift - 为什么 SceneKit 的 physicsWorld didBeginContact 会为一次碰撞触发多次?

我正在使用SceneKit的physicsBody系统来检测对象之间的碰撞,并得到一些非常奇怪的结果。为了说明这一点,我有一个最小的示例,它生成两个具有运动学physicsBodies的球体并沿直线移动它们,以便它们短暂重叠。我希望看到physicsWorld(:didBeginContact:)在球体第一次重叠时被调用一次,而physicsWorld(:didEndContact:)在它们停止重叠时被调用一次。相反,我看到每个函数被调用了25次!下面是要重现的代码:在Xcode8.0中,使用“游戏”模板创建一个全新的项目。将GameViewController.swift的内容替换为

ios - SpriteKit 和 Swift : Creating nodes via didBeginContact messes up the positioning

我不知道这是Xcode中的一个奇怪错误还是SpriteKit的坐标系统有什么我不明白的地方。前提是节点的位置总是相对于它的父节点。但是,每当我从SKPhysicsContactDelegate的“didBeginContact”调用创建和定位具有物理体的节点的block时,该节点始终相对于场景(而不是其父级)定位。请注意,在除“didBeginContact”以外的任何地方触发时,调用同一个block都会按预期工作。另一件事是,如果我移除所述节点的物理主体,即使从“didBeginContact”调用时,该block现在也会按预期工作。我已经被这个问题困扰了两天,如果不提供有关我的实际

ios - didBeginContact :(SKPhysicsContact *)contact not invoked

我创建了SKScene继承类。问题是关于物理体方法的接触-(void)didBeginContact:(SKPhysicsContact*)contact未被调用解决方案可能很简单,但作为spritekit的初学者,我坚持这个。下面是代码#import"MyScene.h"@interfaceMyScene()@propertyBOOLcontentCreated;@end@implementationMyScene-(id)initWithSize:(CGSize)size{self=[superinitWithSize:size];if(self){self.physicsWorl

ios - didBeginContact :(SKPhysicsContact *)contact not invoked

我创建了SKScene继承类。问题是关于物理体方法的接触-(void)didBeginContact:(SKPhysicsContact*)contact未被调用解决方案可能很简单,但作为spritekit的初学者,我坚持这个。下面是代码#import"MyScene.h"@interfaceMyScene()@propertyBOOLcontentCreated;@end@implementationMyScene-(id)initWithSize:(CGSize)size{self=[superinitWithSize:size];if(self){self.physicsWorl

ios - didBeginContact 被同一个 SKPhysicsBody 多次调用

funcdidBeginContact(contact:SKPhysicsContact){if(contact.bodyA.categoryBitMask&BodyType.shield.rawValue)==BodyType.shield.rawValue{contact.bodyB.node?.removeFromParent()counter++println(counter)}elseif(contact.bodyB.categoryBitMask&BodyType.shield.rawValue)==BodyType.shield.rawValue{contact.body
12