Tôi muốn có thể thay đổi chiều cao vật lý của nút khi người dùng vuốt xuống, nhưng không thể tìm ra cách thực hiện điều này, bên cạnh việc đặt lại toàn bộ physicsBody.Thay đổi kích thước SpriteNode PhysicsBody tại thời gian chạy
Khi tôi ban đầu được nạp nút, tôi sử dụng mã bên dưới:
nodeHero.color = UIColor .grayColor()
nodeHero.size.width = 20
nodeHero.size.height = 45
nodeHero.position.x = -frame.size.width/2 + 45
nodeHero.position.y = pointMainY + 30 + nodeHero.size.height/2
nodeHero.zPosition = 110
nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height))
nodeHero.physicsBody?.mass = 1
nodeHero.physicsBody?.angularVelocity = 0
nodeHero.physicsBody?.allowsRotation = false
nodeHero.physicsBody?.restitution = 0
nodeHero.physicsBody?.categoryBitMask = bitHero
addChild(nodeHero)
Và khi tôi vuốt xuống, tôi muốn để có thể làm điều gì đó như thế này (điều này không làm việc):
nodeHero.size.height = 28
nodeHero.physicsBody?.size.height = 28
Nhưng thay vào đó tôi phải sử dụng nodeHero.physicsBody = SKPhysicsBody() một lần nữa, mà resets tất cả các thuộc tính physicsBody khác, vì vậy tôi phải làm điều này:
nodeHero.size.height = 28
nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height))
nodeHero.physicsBody?.mass = 1
nodeHero.physicsBody?.angularVelocity = 0
nodeHero.physicsBody?.allowsRotation = false
nodeHero.physicsBody?.restitution = 0
nodeHero.physicsBody?.categoryBitMask = bitHero
Nếu bạn chạy một hành động tỷ lệ trên một nút có vẻ như cơ thể vật lý của nó cũng sẽ thay đổi: https://stackoverflow.com/questions/24638086/scaling-physics-bodies-in-xcode-spritekit/33572073#33572073 – peacetype