我试图用sprite-kit制作我自己的游戏,但也有一些麻烦。我想要的是将精灵称为"太空船"与"平台"互动如果velocity.dy分量> 1,则为精灵。 0.太空飞船在与平台接触后必须有额外的冲动。所以,有我的问题:
1)为什么我不能用applyImpulse对身体施加冲动?联系人类别很好,NSLog正常工作
2)如何在不进行投影的情况下获得contact.collisionImpulse(CGFloat类型)的x和y分量?
提前致谢。这是我的代码
- (void)didBeginContact:(SKPhysicsContact *)contact
{
if (_spaceship.physicsBody.velocity.dy >= 0) {
NSLog(@"y>0");
}
else {
uint32_t collision = (contact.bodyA.categoryBitMask |
contact.bodyB.categoryBitMask);
if (collision == (CNPhysicsCategorySpaceship|CNPhysicsCategoryPlatform))
{
NSLog(@"y<0");
SKPhysicsBody *firstBody, *secondBody;
firstBody = contact.bodyA;
secondBody = contact.bodyB;
SKSpriteNode *firstNode = (SKSpriteNode *) firstBody.node;
SKSpriteNode *secondNode = (SKSpriteNode *) secondBody.node;
if (firstNode.name == PlatformCategoryName) {
[_spaceship.physicsBody applyImpulse:CGVectorMake(0, 1000)];
[firstNode removeFromParent];
NSLog(@"aaaa");
}
else {
[_spaceship.physicsBody applyImpulse:CGVectorMake(0, 1000)];
[secondNode removeFromParent];
NSLog(@"bbbb");
}
}
}
}