为什么呢?我可以清楚地看到两个精灵重叠!由于联系人的准确性和一致性,我正在自杀数小时,但无法找到办法。在错误的时间触发didBeginContact或didEndContact。有没有人有这个一致的解决方案?我尝试将anchorPoints更改为各种位置(而不是(0.5,0.5)我尝试了其他值,如(0.5,0)),但这似乎已经把所有的事情弄得很糟糕了。我不能设置sprite来设置physicsBody矩形,因为我有非矩形精灵(显然)。所以我的精灵' physicsBody-s主要是基于纹理的。我可以用自己的两只眼睛看到精灵仍然重叠并且没有结束接触,事件仍然触发!为什么会这样?我有场景是联系代表,其他一切都正确连接。碰撞的精灵(让他们称之为SKSpriteNode A和SKSpriteNode B)在场景中,并且彼此之间的接触位掩码正确。这个场景是physicsWorld唯一的联系委托,因此只有场景可以触发并进入事件处理程序,所以我知道它正在工作 - 至少在某些时候。场景中的代码:
-(void) didEndContact:(SKPhysicsContact *)contact {
NSLog(@"didEndContact occured!");
}
我设置了自定义类StaticLevelElement,因此它扩展了SKSpriteNode:
@interface StaticLevelElement : SKSpriteNode
B已被设置为具有三角形图像的StaticLevelElement:
StaticLevelElement * B = [StaticLevelElement spriteNodeWithImageNamed:@"triangle"];
我试图将B&B的物理实体设置为基于纹理的物理实体:
B.physicsBody = [SKPhysicsBody bodyWithTexture:[SKTexture textureWithImageNamed:@"triangle"] size:B.size];
虽然精灵A和B仍在碰撞和重叠,但是发生了didEndContact!当精灵仍然重叠时,我不希望它被触发!我该如何解决这个问题?
答案 0 :(得分:1)
尽量不要使用基于纹理的physicsBody,而是使用基于多边形或基于矩形的physicsBody。