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
Я отредактировал мой код и использовал polygonFromPath, но физический корпус в два раза меньше фактического треугольника. Можете ли вы взглянуть на мой код, я обновил его в op? – coding22
Я не вижу offsetX и offsetY, инициализированные в вашем коде. Они бесполезны, поскольку они содержат значение нуля, если вы не даете ему значение по умолчанию. Каждый оператор 'CGPathAddLineToPoint' по существу рисует 1 строку. Треугольник состоит только из трех сторон, поэтому 3 строки. Не имеет смысла, что вы сделали 5 заявлений. Вам потребуются только два вызова 'CGPathAddLineToPoint', поскольку' CGPathCloseSubpath' свяжет последнюю точку с исходной точкой в качестве третьей строки. –