Создание физики тела из текстуры из текстурного атласа приводит к странным пропорциям - PullRequest
1 голос
/ 18 октября 2019

Я использую физические тела, которые сделаны из изображения, я помещаю файл изображения в файл Assets.xcassets и создаю spriteNode, используя имя изображения в качестве аргумента imageNamed, затем я использую текстуру spriteNodes в качестве аргумента текстуры в PhysicsBody. и то же значение размера из spriteNode, что и аргумент размера. Это работает как брелок ниже 13.0 (13.0 имеет некоторые проблемы с этим). Тем не менее, если я попытаюсь сделать то же самое с теми же файлами изображений, но в текстурном атласе spriteNode () по-прежнему выглядит отлично, но физическая структура в целом непропорциональна, я смогу выстроить их в линию, разделивwidth и height of PhysBody с разными значениями, но тот факт, что мне придется что-то делать грубо, означает, что я, вероятно, сделал что-то не так

Изображение результата при использовании spriteAtlas, имейте в виду, что крылья не 'Часть spriteNode и прямоугольник вокруг орла - это другое тело: о, нет, нет, нет

Как я создаю физические тела:

func createPigeon(size: CGSize, position: CGPoint) {
        //W/o texture atlas
        sprite = SKSpriteNode(imageNamed: "pigeonHitBox")
        //with textureAtlas
        sprite = SKSpriteNode(texture: gameScene.spriteAtlas.textureNamed("pigeonHitBox"))

        sprite!.size = size
        sprite!.position = position
        sprite!.name = "Pigeon"
        sprite!.physicsBody = SKPhysicsBody(texture: sprite!.texture!, size: size)
        sprite!.zPosition = 1
        sprite!.physicsBody!.isDynamic = true
        defaultCollisions()
        gameScene.addChild(sprite!)
    }

1 Ответ

0 голосов
/ 18 октября 2019

Итак, я выяснил, что проблема была в том, что SpriteKit перекрывает и удаляет альфу, чтобы сжать больше изображений в один атлас. Единственное исправление, которое я мог найти для этого, было помещать изображения, которые я использовал для хитбоксов, в файл Assets.xcassets и удостовериться, что действие анимации изменило размер на false.

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

...