我有以下代码
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];
}
正确显示管道图片,但未正确设置碰撞区域。我的代码出了什么问题!
感谢您的帮助
答案 0 :(得分:0)
有一些事情可能导致这种情况:
我相信yScale会缩小图像,但在以后用于设置物理体大小时不会更改该值。 (基本上是物理主体=原始图像大小)
我没有看到一个contactBitMask,它可以让你检查你的(flaip felipe或mario?)与管道接触的时间。
要解决此问题,请尝试:
使用您当前使用的相同变量绘制一个矩形并将其着色为黑色。这将显示物理实体的绘制位置。
将他们设置为有联系人事件,然后记录他们的联系