SpriteKit-计算一个物体击中另一个物体的次数

用户名

我如何才能让我的应用计算该对象的次数:

    - (SKNode*)addRock {
    SKSpriteNode* rock = [SKSpriteNode spriteNodeWithImageNamed:@"asteroid"];
    //set the position to a random X value
    rock.position=CGPointMake ([self makeRandomXWBetween:0 and:self.size.width],self.size.height);
    rock.name = @"rock";
    rock.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:rock.size];
    rock.physicsBody.usesPreciseCollisionDetection = YES;
    rock.physicsBody.allowsRotation = NO;
    rock.physicsBody.categoryBitMask = rockCategory;
    rock.physicsBody.contactTestBitMask = dodgerCategory;

    [self addChild:rock];

    return self;
}

将击中该对象:

- (void)createFloor {
    SKNode *floor = [SKNode node];
    floor.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetMinY(self.frame),1.0 , CGRectGetWidth(self.frame), 1)];
    floor.physicsBody.categoryBitMask = floorCategory;
    [self addChild: floor];
}

基本上,我希望该应用计算“ addRock”对象与“ createFloor”对象建立联系的次数,以及它们建立联系的次数是否可以放置在左上角。

在此先感谢您的帮助!

sangony

创建一个计数器,使用didBeginContact:方法增加计数器并使用该计数器更新SKLabelNode。

1)创建计数器:

@implementation MyScene
{
    int counter;
    BOOL updateLabel;
    SKLabelNode *counterLabel;
}

-(id)initWithSize:(CGSize)size
{
    if (self = [super initWithSize:size])
    {
        counter = 0;

        updateLabel = false;

        counterLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
        counterLabel.name = @"myCounterLabel";
        counterLabel.text = @"0";
        counterLabel.fontSize = 20;
        counterLabel.fontColor = [SKColor yellowColor];
        counterLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter;
        counterLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeBottom;
        counterLabel.position = CGPointMake(50,50); // change x,y to location you want
        counterLabel.zPosition = 900;
        [self addChild: counterLabel];
    }
}

2)检查联系方式:

-(void)didBeginContact:(SKPhysicsContact *)contact
{
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
    if (collision == (dodgerCategory | floorCategory))
    {
        counter++;
        updateLabel = true;
    }
}

3)更新标签文字:

-(void)update:(CFTimeInterval)currentTime
{
    if(updateLabel == true)
    {
        counterLabel.text = [NSString stringWithFormat:@"Counter: %i",counter];
        updateLabel = false;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SpriteKit-检测节点是否击中另一个节点的子节点并执行操作

来自分类Dev

SpriteKit:另一个节点之上的节点

来自分类Dev

SpriteKit:SKSpriteNode包含另一个SKSpriteNodes,但仅包含一个SKPhysicsBody

来自分类Dev

在SpriteKit中获取一个Sprite以“跟随”另一个Sprite

来自分类Dev

我如何让一个物理物体抵消另一个物理物体的碰撞。

来自分类Dev

如何判断一个物体是否在另一个物体的距离之内?

来自分类Dev

如何在Spritekit中检测一个节点是否指向另一个节点

来自分类Dev

过渡到SpriteKit中的另一个SKScene后取消分配SKScene

来自分类Dev

如何从SpriteKit中已经旋转的另一个创建旋转的纹理

来自分类Dev

在SpriteKit中使用另一个场景中的布尔值-Swift

来自分类Dev

从另一个类调用方法-SpriteKit / Objective C

来自分类Dev

如何在另一个方法SpriteKit中访问已初始化的节点

来自分类Dev

将节点链接到另一个节点SpriteKit-Swift

来自分类Dev

从SpriteKit中的另一个类或场景访问var

来自分类Dev

如何聆听另一个物体的事件发射?

来自分类Dev

跟随另一个正在旋转的物体

来自分类Dev

如何聆听另一个物体的事件发射?

来自分类Dev

用SpriteKit抛出一个对象

来自分类Dev

一个或多个SpriteKit纹理图集?

来自分类Dev

传送后将一个物体移动到另一个物体上的同一点

来自分类Dev

绕着另一个物体旋转的物体不断加速

来自分类Dev

动态缩放堆叠在另一个物体上的物体

来自分类Dev

如何在另一个物体周围移动某个物体?

来自分类Dev

检查一个物理物体是否在不等待didBeginContact的情况下接触另一个物体

来自分类Dev

一个框架包含另一个框架或其中的一部分 SpriteKit swift iOS

来自分类Dev

一个物体不动

来自分类Dev

SpriteKit:为什么 SKView 在一个高度消失而在另一个高度出现?SKView 的最大高度是多少?

来自分类Dev

如何将用户的分数转移到Swift和SpriteKit中的另一个场景?

来自分类Dev

Spritekit-从.sks文件中创建的场景从另一个场景过渡时为空白

Related 相关文章

  1. 1

    SpriteKit-检测节点是否击中另一个节点的子节点并执行操作

  2. 2

    SpriteKit:另一个节点之上的节点

  3. 3

    SpriteKit:SKSpriteNode包含另一个SKSpriteNodes,但仅包含一个SKPhysicsBody

  4. 4

    在SpriteKit中获取一个Sprite以“跟随”另一个Sprite

  5. 5

    我如何让一个物理物体抵消另一个物理物体的碰撞。

  6. 6

    如何判断一个物体是否在另一个物体的距离之内?

  7. 7

    如何在Spritekit中检测一个节点是否指向另一个节点

  8. 8

    过渡到SpriteKit中的另一个SKScene后取消分配SKScene

  9. 9

    如何从SpriteKit中已经旋转的另一个创建旋转的纹理

  10. 10

    在SpriteKit中使用另一个场景中的布尔值-Swift

  11. 11

    从另一个类调用方法-SpriteKit / Objective C

  12. 12

    如何在另一个方法SpriteKit中访问已初始化的节点

  13. 13

    将节点链接到另一个节点SpriteKit-Swift

  14. 14

    从SpriteKit中的另一个类或场景访问var

  15. 15

    如何聆听另一个物体的事件发射?

  16. 16

    跟随另一个正在旋转的物体

  17. 17

    如何聆听另一个物体的事件发射?

  18. 18

    用SpriteKit抛出一个对象

  19. 19

    一个或多个SpriteKit纹理图集?

  20. 20

    传送后将一个物体移动到另一个物体上的同一点

  21. 21

    绕着另一个物体旋转的物体不断加速

  22. 22

    动态缩放堆叠在另一个物体上的物体

  23. 23

    如何在另一个物体周围移动某个物体?

  24. 24

    检查一个物理物体是否在不等待didBeginContact的情况下接触另一个物体

  25. 25

    一个框架包含另一个框架或其中的一部分 SpriteKit swift iOS

  26. 26

    一个物体不动

  27. 27

    SpriteKit:为什么 SKView 在一个高度消失而在另一个高度出现?SKView 的最大高度是多少?

  28. 28

    如何将用户的分数转移到Swift和SpriteKit中的另一个场景?

  29. 29

    Spritekit-从.sks文件中创建的场景从另一个场景过渡时为空白

热门标签

归档