2014-07-24 8 views
0

Привет всем Я пытаюсь сделать базовый тест рисования линии с помощью xcode 6 с помощью swift. Но моя система столкновения не работает вообще. Это код моей системы столкновения:столкновение sprite-kit не работает

func drawLines() { 
    CGPathMoveToPoint(path, nil, location.x, location.y) 
    CGPathAddLineToPoint(path, nil, self.frame.size.width/2, self.frame.size.height/5) 

    drawLine.append(SKShapeNode()) 
    drawLine[index] = SKShapeNode() 

    line.append(drawLine[index]) 
    line[index].path = path 
    line[index].strokeColor = UIColor.redColor() 
    line[index].lineWidth = 5.0 
    line[index].physicsBody = SKPhysicsBody(rectangleOfSize: line[index].frame.size) 
    line[index].physicsBody.dynamic = false 
    line[index].zPosition = 1 
    self.addChild(line[index]) 
    index++ 
} 

Я не могу понять эту проблему, но я думаю, что я сделал ошибку в том, что часть кода. Вот остальная часть моего кода:

class GameScene: SKScene { 

var line: [SKShapeNode] = [] 
var drawLine: [SKShapeNode] = [] 
var path = CGPathCreateMutable() 
var touch: UITouch! 
var location:CGPoint! 
var index = 0 
let player = SKSpriteNode(imageNamed: "player") 

override func didMoveToView(view: SKView) { 

    player.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2) 
    player.physicsBody = SKPhysicsBody(rectangleOfSize: player.size) 
    player.physicsBody.dynamic = true 
    self.physicsWorld.gravity = CGVectorMake(0,-1) 
    player.zPosition = 1 
    self.addChild(player) 
} 

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 
    touch = touches.anyObject() as UITouch! 
    location = touch.locationInNode(self) 
    drawLines() 
} 

func drawLines() { 
    CGPathMoveToPoint(path, nil, location.x, location.y) 
    CGPathAddLineToPoint(path, nil, self.frame.size.width/2, self.frame.size.height/5) 

    drawLine.append(SKShapeNode()) 
    drawLine[index] = SKShapeNode() 

    line.append(drawLine[index]) 
    line[index].path = path 
    line[index].strokeColor = UIColor.redColor() 
    line[index].lineWidth = 5.0 
    line[index].physicsBody = SKPhysicsBody(rectangleOfSize: line[index].frame.size) 
    line[index].physicsBody.dynamic = false 
    line[index].zPosition = 1 
    self.addChild(line[index]) 
    index++ 

} 



override func update(currentTime: CFTimeInterval) { 
    /* Called before each frame is rendered */ 
} 

------------------- EDIT ------------ -------

я теперь использовать эту строку кода для физики моей линии:

line[index].physicsBody = SKPhysicsBody(rectangleOfSize: 
      CGSizeMake(line[index].frame.width*2 ,line[index].frame.height*2)) 

Эта проблема здесь, я думаю, что когда я рисую свою линию под углом прямоугольник не поворачивается, поэтому мой прямоугольник заканчивается до большого.

+0

«не работает (вообще)» не является описанием проблемы. Опишите, что происходит и что должно произойти. – LearnCocos2D

+0

ничего не происходит, игрок просто падает, и никакого столкновения вообще нет –

ответ

-2

Насколько я знаю, touchesBegan возвращает NSSet штрихов (массив грубо говоря), поэтому вы хотели бы пропустить их или получить доступ к определенному касанию по его индексу. Я бы порекомендовал цикл через штрихи, как следующий код.

override func touchesBegan(touches:NSSet) { 
    for touch: AnyObject in touches { 
     var location:CGPoint = touch.locationInNode(self.scene) 
     performSomethingCrazy(withLocationAt: location) 
    } 
} 

Наслаждайтесь.

Смежные вопросы