【问题标题】:Sprite Kit collision detection and physicsSprite Kit 碰撞检测和物理
【发布时间】:2014-03-23 07:22:54
【问题描述】:

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

谢谢大家。

- (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];

}

【问题讨论】:

    标签: collision-detection sprite-kit skphysicsbody


    【解决方案1】:

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

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

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

    _Enemy.physicsBody.affectedByGravity = NO;
    

    或者,在 initWithSize 方法中,

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

    你需要学习SKPhysicsBody class reference。

    【讨论】:

    • 我试过了,但是会发生什么突然间敌人的角色会有某种重力,它会掉到底部边缘并停在那里。
    • 差不多但不完全。因为现在发生的事情是,如果敌人撞到墙上,它就会卡在那里,不会离开。我该如何解决?顺便谢谢芽。
    • 你是如何控制敌方精灵的移动的?
    • 它是随机的。计算机根据随机的 x 和 y 位置来执行此操作。
    • 是的,我明白了。请为此添加代码。如果您希望使用物理正确模拟您的节点,我确信您使用的 SKActions 效果不佳。
    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多