Sprite kit 在SpriteKit中,两个spritenodes未正确触发触点事件

Sprite kit 在SpriteKit中,两个spritenodes未正确触发触点事件,sprite-kit,collision,contact,skspritenode,Sprite Kit,Collision,Contact,Skspritenode,我有两个SKSpriteNode-s(让我们称它们为SKSpriteNode A和SKSpriteNode B),A是我的英雄精灵,B是场景元素,有时,didBeginContact在它们碰撞时触发,有时不触发。A具有基于纹理的physicsBody集,B具有基于矩形的physicsBody集。我可以看到它们的纹理发生碰撞和相交,但在didBeginContact中我看不到NSLog着火。这并不是完全一致的,因为它们在另一次碰撞时,接触事件会很好地触发。我需要这是一致的,自然。有人对这个问题有什

我有两个SKSpriteNode-s(让我们称它们为SKSpriteNode A和SKSpriteNode B),A是我的英雄精灵,B是场景元素,有时,didBeginContact在它们碰撞时触发,有时不触发。A具有基于纹理的physicsBody集,B具有基于矩形的physicsBody集。我可以看到它们的纹理发生碰撞和相交,但在didBeginContact中我看不到NSLog着火。这并不是完全一致的,因为它们在另一次碰撞时,接触事件会很好地触发。我需要这是一致的,自然。有人对这个问题有什么建议吗?场景是physicsWorld的唯一联系人代理,因此只有场景可以触发并进入事件处理程序,因此我知道它正在工作——至少在某些时候是这样。场景中的代码:

-(void)didBeginContact:(SKPhysicsContact *)contact {
    NSLog(@"Contact happened!!!!!! :) ");
}
我设置了自定义类StaticLevelElement,因此它扩展了SKSpriteNode:

@interface StaticLevelElement : SKSpriteNode
B已设置为带有三角形图像的StaticLevelElement:

StaticLevelElement * B = [StaticLevelElement spriteNodeWithImageNamed:@"triangle"];
我尝试将B的physicsBody设置为基于纹理的physicsBody:

B.physicsBody = [SKPhysicsBody bodyWithTexture:[SKTexture textureWithImageNamed:@"triangle"] size:B.size];
B.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:B.size];
我也有同样的结果-间歇性接触,偶尔开火,但并不完全一致。如果我将B设置为具有基于矩形的physicsBody,也会发生同样的情况:

B.physicsBody = [SKPhysicsBody bodyWithTexture:[SKTexture textureWithImageNamed:@"triangle"] size:B.size];
B.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:B.size];

这是我的观点,我可以中等程度的肯定地说,是主持人造成了这一点。我把它设置为(0.5,0),这似乎是由于移动了整个身体而引起的问题,我一点都不喜欢。一旦我删除了anchorPoint的手动设置(并将其返回到(0.5,0.5)),接触看起来或多或少是正常的。仍然不完美-不是每次重叠都触发,但我认为更好。正如我所说,我仍然不完全清楚什么时候会发生接触以及主持人是如何影响它的,但看起来确实如此。

这是我的观点,我可以中等程度的肯定地说,这是主持人造成的。我把它设置为(0.5,0),这似乎是由于移动了整个身体而引起的问题,我一点都不喜欢。一旦我删除了anchorPoint的手动设置(并将其返回到(0.5,0.5)),接触看起来或多或少是正常的。仍然不完美-不是每次重叠都触发,但我认为更好。正如我所说,我仍然不完全清楚什么时候会发生接触以及主持人点是如何影响它的,但看起来确实如此。

你应该发布一些代码、细节、截图等。。否则每个回答的人都只是猜测。如果我们看不到你的尝试,很难说为什么它不起作用。我会尽快(两天后)提出悬赏问题。你应该发布一些代码、细节、截图等。。否则每个回答的人都只是猜测。如果我们看不到你的尝试,很难说为什么它不起作用。我会尽快(两天后)就这个问题悬赏。