gpt4 book ai didi

xcode - 作为 SKTexture 的物理体不旋转

转载 作者:行者123 更新时间:2023-11-30 13:38:40 25 4
gpt4 key购买 nike

我正在制作一个主角旋转的游戏,但是,我想使用 SKTexture 为角色 Sprite 节点设置自定义边界。然而,当我这样做时,我的角色不会旋转。当我使用常规的circleOfRadius(因为我的 Sprite 是圆形的,但不是完美的圆形)时,它会旋转,但碰撞时不准确。这是我的代码:

    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

最佳答案

不太确定如何旋转 Sprite 或移动它,但如果我给它一个默认的旋转并将其放在表面上,它会按应有的方式为我旋转(我使用了您提供的图片)。这样,它就不会完美地落在地面上(zRotation 0.0)。

尝试使用这个:

mainSprite.zRotation = 0.1 //note that these are radians

并将其放在平坦的表面上。

通过施加一个小力或脉冲,您可能可以实现同样的效果,这会影响 Sprite 的zRotation属性...您要使用什么,取决于您实际移动节点的方式 - 使用物理,或者直接更改其位置属性(有关重要​​细节,请参阅我关于混合物理和手动节点移动的评论)。

关于xcode - 作为 SKTexture 的物理体不旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35820238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com