Я делаю игру, где главный символ вращается, однако я хочу использовать SKTexture для установки пользовательских границ на узел спрайта символов. Однако, когда я это делаю, мой персонаж не вращается. Когда я использую обычный circleOfRadius (потому что мой спрайт круглый, но не идеально округлый), он вращается, но не точно при столкновениях. Вот мой код:Физический корпус как SKTexture не вращается
var mainSpriteTexture = SKTexture(imageNamed: "Main")
mainSprite = SKSpriteNode(texture: mainSpriteTexture)
mainSprite.setScale(0.2)
mainSprite.position = CGPoint(x: self.frame.width/2, y: 100)
mainSprite.physicsBody = SKPhysicsBody(texture: mainSpriteTexture, size: mainSprite.size)
mainSprite.physicsBody?.categoryBitMask = PhysicsCatagory.player
mainSprite.physicsBody?.collisionBitMask = PhysicsCatagory.platform | PhysicsCatagory.ground
mainSprite.physicsBody?.contactTestBitMask = PhysicsCatagory.platform | PhysicsCatagory.ground | PhysicsCatagory.score
mainSprite.physicsBody?.affectedByGravity = true
mainSprite.physicsBody?.dynamic = true
mainSprite.physicsBody?.allowsRotation = true
self.addChild(mainSprite)
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
updateSpritePosition()
if gameStarted == true {
if died == false {
mainSprite.physicsBody?.velocity = CGVectorMake(direction, (mainSprite.physicsBody?.velocity.dy)!)
}
else if died == true {
mainSprite.physicsBody?.velocity = CGVectorMake(0, (mainSprite.physicsBody?.velocity.dy)!)
}
}
Вот форма Я использую: http://imgur.com/JCeEAbv
Можете ли вы добавить фигуру, которую используете, а также код, ответственный за вращение? Или спрайт вращается в результате взаимодействия с другими объектами? Таким образом, никто не может точно сказать, что происходит, потому что ваша проблема не может быть воссоздана ... – Whirlwind
Я добавил еще несколько кодов. Спрайт всегда должен вращаться всякий раз, когда начинается игра. – DevelUpGames
Имейте в виду, что если вас интересует реалистичная физическая симуляция, вы должны перемещать объекты по силам или импульсам (или непосредственно путем изменения вектора скорости). Если вы вручную измените позицию узла с помощью свойства position или используете SKAction, у вас могут возникнуть странные результаты, потому что вы вытаскиваете спрайт из моделирования физики. Физика и ручное перемещение узлов (например, с помощью SKAction) безопасны только в том случае, если вас интересует только обнаружение контактов. Если вы хотите столкновения, вы должны позволить физическому движку перемещать ваши объекты. – Whirlwind