我正在制作我的第一个游戏,在图片中,玩家是一个块的边缘,块的左侧略微弯曲,右侧是直的(我不知道是否重要 - 但似乎有所作为)
当图层位于最左侧位置时,屏幕会上下跳动,就好像玩家对其所连接的块的哪个部分感到困惑一样。
我尝试移动但是玩家被卡住了(除非我跳了)这也发生在块的右边,但屏幕不会像右边一样跳(必须是曲线?)。
我认为它与摩擦有关,但是Block的摩擦力设置为零。
我该如何解决这个问题?
以下是该块的类:
import SpriteKit
class Tile: SKSpriteNode
{
var textureAtlas:SKTextureAtlas = SKTextureAtlas(named:"Tiles.atlas")
func spawn(parentNode:SKNode, position:CGPoint, size:CGSize = CGSize(width: 48, height: 48), texture_id: Int = 1)
{
parentNode.addChild(self)
self.size = size
self.position = position
self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: self.size.width, height: self.size.height))
self.physicsBody?.affectedByGravity = false;
self.physicsBody?.dynamic=false
//self.physicsBody?.friction = 0
self.texture = textureAtlas.textureNamed("\(texture_id).png");
if texture_id == 17 {
//self.physicsBody?.friction = 0;
self.physicsBody?.categoryBitMask = PhysicsCategory.ground.rawValue
}
}
这是玩家课程的一部分:
self.physicsBody?.linearDamping = 1.0
self.physicsBody?.mass = 84
self.physicsBody?.allowsRotation = false
self.physicsBody?.categoryBitMask = PhysicsCategory.penguin.rawValue
self.physicsBody?.contactTestBitMask = PhysicsCategory.enemy.rawValue
感谢。
答案 0 :(得分:1)
对于角色来说,质量和阻尼可能会有问题。以下是我如何为跳跃设置玩家动态:
physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.size.width, self.size.height))
physicsBody?.dynamic = true
physicsBody?.allowsRotation = false
physicsBody?.restitution = 0.0
physicsBody?.friction = 0.0
physicsBody?.angularDamping = 0.0
physicsBody?.linearDamping = 0.0
physicsBody?.affectedByGravity = true
当玩家跳跃时,对physicsBody
:
physicsBody?.applyImpulse(CGVector(dx: 0.0, dy: 50.0))