0

大家好,我正在制作一个游戏,其中敌人不应该能够穿过游戏中的墙壁和物品,例如如果有一堵墙,敌人的角色不应该能够穿过它。但是,我无法让物理学完全正确地工作。如果敌人试图撞到像墙这样的另一个精灵,我希望它被阻止。

多谢你们。

- (void) Enemy {
_Enemy = [SKSpriteNode spriteNodeWithImageNamed:@"enemy"];
_Enemy.position = CGPointMake(520, _Enemy.size.height/1.50);
[self addChild:_Enemy];

}

- (void) EnemyHomeWalls {
Wall = [SKSpriteNode spriteNodeWithImageNamed:@"Thewall@2x"];
wall.name = @"Thewall";
wall.position = CGPointMake(500, 150);
Wall.xScale = 0.12;
Wall.yScale = 0.12;
Wall.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
[self addChild:Wall];

}

4

1 回答 1

0

你需要敌人节点也有一个physicsBody:

_Enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:_Enemy.size];

为防止节点受重力影响,可以设置

_Enemy.physicsBody.affectedByGravity = NO;

或者,在 initWithSize 方法中,

self.physicsWorld.gravity = CGVectorMake(0, 0);

您需要学习SKPhysicsBody 类参考

于 2014-03-23T07:29:16.400 回答