У меня возникли проблемы с тем, что мое физическое тело стены непроницаемо. Если физическое тело игрового узла сталкивается со стенкой с медленной «скоростью», оно останавливается. Однако, если он идет с быстрой «скоростью», он проходит через стену. Мой игрок перемещается на PanGestureRecognizer
. По скорости я в основном имею в виду, если происходит внезапное «быстрое» салфетки или если жест не является приличным медленным движением, то игрок проходит через стену. Это мои узловые свойства:Изготовление SKPhysicsBody непроницаемо?
self.player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.player.size];
self.player.physicsBody.categoryBitMask = SVGPlayerCategory;
self.player.physicsBody.contactTestBitMask = SVGWallCategory;
self.player.physicsBody.collisionBitMask = SVGWallCategory;
self.player.physicsBody.dynamic = YES;
self.player.physicsBody.usesPreciseCollisionDetection = YES;
self.player.physicsBody.velocity = CGVectorMake(0, 0);
self.leftWall.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.leftWall.size];
self.leftWall.physicsBody.categoryBitMask = SVGWallCategory;
self.leftWall.physicsBody.contactTestBitMask = SVGPlayerCategory;
self.leftWall.physicsBody.collisionBitMask = SVGPlayerCategory;
self.leftWall.physicsBody.dynamic = NO;
self.leftWall.physicsBody.resting = YES;
Если это помогает, это мой метод ход:
-(void)dragPlayer: (UIPanGestureRecognizer *)gesture {
CGPoint translation = [gesture translationInView:self.view];
SKAction *move = [SKAction moveByX:translation.x y:-translation.y duration:0];
[self.player runAction:move];
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
}
Есть ли что-то мне не хватает?