Создание собственного пути для тела физики в SpriteKit - PullRequest
0 голосов
/ 19 февраля 2020

Попытка создать собственный путь для тела физики ведра, но возникла проблема

Основная идея - положить мяч в ведро. Шар появляется в сенсорном месте на экране и падает на землю. Но это никогда не летит в ведро. Как я понял, физика тела больше, чем текстура, но я не знаю почему.

код:

func spawnBucket() -> SKSpriteNode {
        let bucketTexture = SKTexture(imageNamed: "bucket_1")
        let bucket = SKSpriteNode(texture: bucketTexture)
        bucket.position = CGPoint(x: self.screenSize.width / 2 , y: 200)
        bucket.zPosition = 3

        let offsetX = bucket.frame.size.width * bucket.anchorPoint.x
        let offsetY = bucket.frame.size.height * bucket.anchorPoint.y

        let path = CGMutablePath()

        path.move(to: CGPoint(x: 74 - offsetX, y: 72 - offsetY))
        path.addLine(to: CGPoint(x: 58 - offsetX, y: 225 - offsetY))
        path.addLine(to: CGPoint(x: 53 - offsetX, y: 233 - offsetY))
        path.addLine(to: CGPoint(x: 66 - offsetX, y: 241 - offsetY))
        path.addLine(to: CGPoint(x: 80 - offsetX, y: 218 - offsetY))
        path.addLine(to: CGPoint(x: 147 - offsetX, y: 202 - offsetY))
        path.addLine(to: CGPoint(x: 199 - offsetX, y: 213 - offsetY))
        path.addLine(to: CGPoint(x: 227 - offsetX, y: 224 - offsetY))
        path.addLine(to: CGPoint(x: 227 - offsetX, y: 238 - offsetY))
        path.addLine(to: CGPoint(x: 234 - offsetX, y: 229 - offsetY))
        path.addLine(to: CGPoint(x: 226 - offsetX, y: 204 - offsetY))
        path.addLine(to: CGPoint(x: 223 - offsetX, y: 172 - offsetY))
        path.addLine(to: CGPoint(x: 211 - offsetX, y: 74 - offsetY))
        path.addLine(to: CGPoint(x: 178 - offsetX, y: 57 - offsetY))
        path.addLine(to: CGPoint(x: 139 - offsetX, y: 54 - offsetY))
        path.addLine(to: CGPoint(x: 107 - offsetX, y: 56 - offsetY))

        path.closeSubpath()
        bucket.physicsBody = SKPhysicsBody(polygonFrom: path)
//        bucket.physicsBody = SKPhysicsBody(texture: bucketTexture, size: bucket.size)
        return bucket
    }

picture1, picture2 (пытается создать физическое тело, как это) Как я могу реализовать эту идею? Или я вообще не прав?

UPD: создание физического тела в другом месте

после того, как я написал код: bucket.setscale(1.5) получил тот результат

...