SpriteKit - 使精灵移动类似于另一个精灵

时间:2014-06-30 12:13:30

标签: sprite-kit collision-detection game-physics

我正在制作一种平台游戏(想想超级马里奥但是采用自上而下的视图风格)游戏,我希望我的主角能够与它所接触的平台一起移动。

所以我用过这个:

-(void)didBeginContact:(SKPhysicsContact *)contact
{

SKPhysicsBody *firstBody;
SKPhysicsBody *secondBody;

if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask) {
    firstBody = contact.bodyA;
    secondBody = contact.bodyB;
}
else {
    firstBody = contact.bodyB;
    secondBody = contact.bodyA;
}



if (firstBody.categoryBitMask == PlatformCategory || secondBody.categoryBitMask == PlayerCategory) {
_contact = YES;



}
-(void)didSimulatePhysics
{
if (_contact) {
_player.position = CGPointMake(_platform2.position.x, _platform2.position.y +     10);
}
}

}

它有点工作,现在我的播放器在接触它时正在使用该特定平台,但这不是一个非常实用的方法,因为我会随机生成平台。那怎么实现呢?

1 个答案:

答案 0 :(得分:0)

SKPhysicsBody有一个名为node的属性,它是它附加的父精灵。在你的碰撞方法中,测试物理体是否属于碰撞类平台,然后:

SKSpriteNode *thisCollidedPlatform = (SKSpriteNode*) nameOfPhysicsBody.node

然后使用thisCollidedPlatform的位置来设置玩家位置。