显示图像和设置ContactTestBitMask是不一样的

时间:2014-03-18 14:19:48

标签: ios sprite-kit ios7.1 skspritenode

我有以下代码

static const CGFloat kPipeWidth=56;

(void)topObstacle { 

    Obstacle *pipeTop = [Obstacle spriteNodeWithImageNamed:@"pipetop-1"];

    [pipeTop setCenterRect:CGRectMake(26.0/kPipeWidth, 26.0/kPipeWidth, 4.0/kPipeWidth, 4.0/kPipeWidth)];

    [pipeTop setYScale:pipeTopHeight/kPipeWidth];   
    [pipeTop setPosition:CGPointMake(self.size.width+(pipeTop.size.width/2),
        self.size.height-(pipeTop.size.height/2))];   
    [self addChild:pipeTop];

    pipeTop.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:pipeTop.size];   
    [pipeTop.physicsBody setAffectedByGravity:NO];   
    [pipeTop.physicsBody setDynamic:NO];

    [pipeTop.physicsBody setCategoryBitMask:kPipeCategory];  
    [pipeTop.physicsBody setCollisionBitMask:kplayerCategory]; 
}

正确显示管道图片,但未正确设置碰撞区域。我的代码出了什么问题!

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

有一些事情可能导致这种情况:

  1. 我相信yScale会缩小图像,但在以后用于设置物理体大小时不会更改该值。 (基本上是物理主体=原始图像大小)

  2. 我没有看到一个contactBitMask,它可以让你检查你的(flaip felipe或mario?)与管道接触的时间。

  3. 要解决此问题,请尝试:

    • 使用您当前使用的相同变量绘制一个矩形并将其着色为黑色。这将显示物理实体的绘制位置。

    • 将他们设置为有联系人事件,然后记录他们的联系