2015-05-30 2 views
0

Im using rectangleOfSize прямо сейчас, чтобы обернуть физическое тело вокруг моего треугольника, но физическое тело слишком велико. Есть ли способ, которым я мог бы сделать прямоугольник меньшим, чтобы он не слишком сильно торчал. Это то, что я использую прямо сейчас:Как я могу обернуть физическое тело вокруг треугольника?

EDIT: Я попробовал polygonFromPath, но тело физики треугольника похоже на половину размера фактического треугольника. Я использовал этот сайт http://insyncapp.net/SKPhysicsBodyPathGenerator.html, чтобы сделать координаты.

topTriangle.position = CGPointMake(self.size.width/0.5, self.size.height/1.3) 
    topTriangle.zPosition = 17 
    topTriangle.runAction(sequenceAllThis) 
    addChild(topTriangle) 

    let offsetX = CGFloat() 
    let offsetY = CGFloat() 

    topTriangle.frame.size.width * topTriangle.anchorPoint.x; 
    topTriangle.frame.size.width * topTriangle.anchorPoint.x; 

    let path = CGPathCreateMutable() 

    CGPathMoveToPoint(path, nil, 66 - offsetX, 1 - offsetY); 
    CGPathAddLineToPoint(path, nil, 130 - offsetX, 136 - offsetY); 
    CGPathAddLineToPoint(path, nil, 3 - offsetX, 135 - offsetY); 
    CGPathAddLineToPoint(path, nil, 0 - offsetX, 135 - offsetY); 
    CGPathAddLineToPoint(path, nil, 131 - offsetX, 135 - offsetY); 
    CGPathAddLineToPoint(path, nil, 1 - offsetX, 135 - offsetY); 

    CGPathCloseSubpath(path) 

    topTriangle.physicsBody = SKPhysicsBody(polygonFromPath: path) 
    topTriangle.physicsBody?.affectedByGravity = false 
    topTriangle.physicsBody?.allowsRotation = false 
    topTriangle.physicsBody?.categoryBitMask = GameOverCategory 
    topTriangle.physicsBody?.contactTestBitMask = HeroCategory 
    topTriangle.physicsBody?.collisionBitMask = HeroCategory 
    topTriangle.physicsBody?.mass = 10000 

ответ

0

Использование SKPhysicsBody(polygonFromPath:), который позволяет генерировать пользовательские формы с пути, который вы определили.

Путь может быть построен различными способами. Два из способов, которыми я знаю, - это классы UIBezierPath и CGPathCreateMutable.

+0

Я отредактировал мой код и использовал polygonFromPath, но физический корпус в два раза меньше фактического треугольника. Можете ли вы взглянуть на мой код, я обновил его в op? – coding22

+0

Я не вижу offsetX и offsetY, инициализированные в вашем коде. Они бесполезны, поскольку они содержат значение нуля, если вы не даете ему значение по умолчанию. Каждый оператор 'CGPathAddLineToPoint' по существу рисует 1 строку. Треугольник состоит только из трех сторон, поэтому 3 строки. Не имеет смысла, что вы сделали 5 заявлений. Вам потребуются только два вызова 'CGPathAddLineToPoint', поскольку' CGPathCloseSubpath' свяжет последнюю точку с исходной точкой в ​​качестве третьей строки. –

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