【问题标题】:Sprite Kit contact countSprite Kit 联系人计数
【发布时间】:2014-10-22 15:20:23
【问题描述】:

我有一个物体(球)接触地面:球非常有弹性并且接触地面超过 7 次。

我已经使用 categoryBitMask 和 contactTestBitMask 并在 -(void)didBeginContact:(SKPhysicsContact *)contact 中很好地设置了所有内容。

我创建了一个属性 SKAction 来处理音效并将一个音频文件分配给该动作:

 self.sfxBounce1 = [SKAction playSoundFileNamed:@"bounce1.caf" waitForCompletion:NO];

我在 didBeginContact 中调用了这个 sfxBounce1。关键是一切都很好。除了一个问题是我的球弹跳很多,但出于个人原因,我需要在球接触地面 3 次后停止播放音频/SKAction。

在游戏中,球在 3 次后仍然弹跳,只是我需要停止播放的声音。

但是由于代码在didBeginContact方法中的IF语句中,所以每次与地面接触后音频一直在播放。我在编程方面仍然很年轻,尤其是在 Objective-C 方面。

下面是一些代码

-(void)didBeginContact:(SKPhysicsContact *)contact
{
    if ((firstBody.categoryBitMask == ballCategory) && (secondBody.categoryBitMask == groundCategory))      //Ball & Ground contact
{
    int random = arc4random() %6; //Random # generator of 7 possibilites.

    switch (random) //Generated # represents a case, which in turn initiates a bounce sound upon contact.
    {
        case 0:
            [self runAction:self.sfxBounce1];
            break;
        case 1:
            [self runAction:self.sfxBounce2];
            break;
        case 2:
            [self runAction:self.sfxBounce3];
            break;
        case 3:
            [self runAction:self.sfxBounce4];
            break;
        case 4:
            [self runAction:self.sfxBounce5];
            break;
        case 5:
            [self runAction:self.sfxBounce6];
            break;
        case 6:
            [self runAction:self.sfxBounce7];
            break;
    }

    [self deleteNode];
}

我不知道在 6 种情况下(在 [self runAction:self.sfxBounce1]; 和 break; 之间)分别输入什么代码,这将在一定数量的反弹/与地面接触后停止动作.

【问题讨论】:

  • 感谢您编辑我的问题 LearnCocos2D

标签: objective-c audio sprite-kit xcode6 skaction


【解决方案1】:

在@interface 的顶部创建一个 int,您可以在整个代码中引用:

property (nonatomic) int bounceCount;

这是您的 didBeginContact 的更新版本:

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

if ((firstBody.categoryBitMask == ballCategory) && (secondBody.categoryBitMask == groundCategory))      //Ball & Ground contact
{
    self.bounceCount++;
    if(self.bounceCount>3)
       return;

     //Your Code

}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多