我正在制作主角旋转的游戏,但是,我想使用SKTexture为角色精灵节点设置自定义边界。但是,当我这样做时,我的角色不会旋转。当我使用常规circleOfRadius时(因为我的精灵是圆形的,但没有完美的圆形),它会旋转,但在碰撞时不准确。这是我的代码:
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
答案 0 :(得分:0)
不确定如何旋转精灵或移动精灵,但是如果我给它一个默认的旋转并将其放在曲面上,它会为我旋转(我使用了你提供的图片)。这样,它就不会完美地落在地面上(zRotation 0.0
)。
尝试使用它:
mainSprite.zRotation = 0.1 //note that these are radians
将其放在平坦的表面上。
你可以通过施加一个小的力或冲动来实现同样的事情,它会影响精灵的zRotation
属性......你要使用的是什么,取决于你实际上如何移动你的节点 - 使用物理,或者直接更改其位置属性(请参阅我关于混合物理和手动节点移动的注释以获取重要细节)。