2014-09-19 2 views
1

это в Objective-C код, который работает именно для столкновения физики тела вокруг экранаспрайт комплект быстры граница для сцены

self.physicsWorld.gravity = CGVectorMake(10.0f, -10.0f); 
    // Create a physics body borders the screen 
    SKPhysicsBody* borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; 
    // Set physicsBody of scene to borderBody 
    self.physicsBody = borderBody; 

    SKSpriteNode* aa = [SKSpriteNode spriteNodeWithImageNamed:@"ca1.png"]; 
    aa.position = CGPointMake(20, 20); 
    aa.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:aa.frame.size.width/2]; 

    aa.physicsBody.friction = 0.0f; 
    aa.physicsBody.restitution = 1.0f; 
    aa.physicsBody.linearDamping = 0.0f; 

    [self addChild:aa]; 

, которые должны быть эквивалентны для быстрой

self.physicsWorld.gravity = CGVectorMake(CGFloat(10.0), CGFloat(-10.0)); 
let physicsBody = SKPhysicsBody (edgeLoopFromRect: self.frame) 
self.physicsBody = physicsBody 

var sp=SKSpriteNode() 
var atexture=SKTexture(imageNamed: "candycane.png") 
sp=SKSpriteNode(texture: atexture) 
sp.position=CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)) 

    sp.physicsBody = SKPhysicsBody(circleOfRadius: bird.size.height/2) 
    sp.physicsBody?.friction = 0 
    sp.physicsBody?.restitution = 1 
    sp.physicsBody?.linearDamping = 0 

    self.addChild(sp) 

но работы только сверху и снизу spritenode может выходить влево и вправо

В чем проблема?. Как я могу иметь границу для сцены в быстрой?.

+0

Вы не видите всю сцену. Попробуйте выбрать параметр «Поворот слева» в меню «Оборудование для симулятора». Кстати, вы также смешиваете sp и птицу. – 0x141E

+0

sp и bird его только неправильно, потому что я изменился для здесь. –

+0

Не думайте, что Rotate Left его решение Код в объективе-c отлично работает в ландшафте и портрете –

ответ

2

так это магический трюк

позволяет добавьте это в GameViewController

let scene = GameScene(size: skView.bounds.size) 

конец получить тот же результат Objective-C все работает нормально

+1

Можете ли вы напечатать какой-то код вашего GameViewController? Благодаря! – MeV

2

проблема заключается в том, что этот стриж код не может делать то же эффект т.е следующий Objective-C код

let physicsBody = SKPhysicsBody (edgeLoopFromRect: self.frame) 
self.physicsBody = physicsBody 

Objective-C код

SKPhysicsBody* borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; 
self.physicsBody = borderBody; 

Objective-C код работы стрижа нет

0

на данный момент я решена с этим

let physicsBody = SKPhysicsBody (edgeLoopFromRect: CGRect(x: 300, y: 0, width: self.size.width-600, height: self.size.height)) 

и получить тот же результат Objective-C код в симуляторе iphone 6, но этот его очень плохое решение

я буду делать, что йота правильный путь

0

Вы пробовали идти в свой GameViewController и установив следующее:

scene.scaleMode = SKSceneScaleMode.ResizeFill

У меня была аналогичная проблема, и это установило его для меня.

0

Я надеюсь, что это будет полезно для вас в Swift для столкновения с боковым и верхним нижним спрайтом.

self.physicsBody = SKPhysicsBody (edgeLoopFromRect: self.frame)