我对编程很新,似乎无法弄清楚这个物理世界的问题。当我向我的精灵节点添加一个物理体时,我再也看不到场景中的精灵节点了。
代码:
func createBird() {
let randomSpawn = Int(arc4random_uniform(2))
if randomSpawn == 1 {
let newX = Int(-20)
let newY = Int(arc4random_uniform(500) + 300)
var p = CGPoint(x: newX, y: newY)
var destination = CGPoint(x:Int(self.frame.width+21), y:newY)
var moverSpeed = Int(arc4random_uniform(5) + 3)
let birdRight = SKSpriteNode (imageNamed: "bird-right1")
birdRight.xScale = 0.6
birdRight.yScale = 0.6
birdRight.position = p
birdRight.zPosition = 2
//birdRight.physicsBody = SKPhysicsBody(rectangleOfSize: birdRight.size)
birdRight.physicsBody?.dynamic = true
birdRight.physicsBody?.categoryBitMask = birdCategory
birdRight.physicsBody?.contactTestBitMask = ballCategory
birdRight.physicsBody?.collisionBitMask = 0
let birdMoveRight = SKAction.animateWithTextures([
SKTexture(imageNamed: "bird-right1"),
SKTexture(imageNamed: "bird-right2"),
SKTexture(imageNamed: "bird-right3"),
SKTexture(imageNamed: "bird-right4"),
SKTexture(imageNamed: "bird-right5"),
SKTexture(imageNamed: "bird-right6"),
SKTexture(imageNamed: "bird-right7"),
SKTexture(imageNamed: "bird-right8"),
SKTexture(imageNamed: "bird-right9"),
SKTexture(imageNamed: "bird-right10")
], timePerFrame: 0.05)
let foreverAction = SKAction.repeatActionForever(birdMoveRight)
birdRight.runAction(foreverAction)
let duration = NSTimeInterval(moverSpeed)
let action = SKAction.moveTo(destination, duration: duration)
birdRight.runAction(action)
addChild(birdRight)
}
else {
let newX = Int(self.frame.width+20)
let newY = Int(arc4random_uniform(500) + 300)
var p = CGPoint(x: newX, y: newY)
var destination = CGPoint(x:-21, y:newY)
var moverSpeed = Int(arc4random_uniform(5) + 3)
let birdLeft = SKSpriteNode(imageNamed: "bird-left1")
birdLeft.xScale = 0.6
birdLeft.yScale = 0.6
birdLeft.position = p
birdLeft.zPosition = 2
let birdMoveLeft = SKAction.animateWithTextures([
SKTexture(imageNamed: "bird-left1"),
SKTexture(imageNamed: "bird-left2"),
SKTexture(imageNamed: "bird-left3"),
SKTexture(imageNamed: "bird-left4"),
SKTexture(imageNamed: "bird-left5"),
SKTexture(imageNamed: "bird-left6"),
SKTexture(imageNamed: "bird-left7"),
SKTexture(imageNamed: "bird-left8"),
SKTexture(imageNamed: "bird-left9"),
SKTexture(imageNamed: "bird-left10")
], timePerFrame: 0.05)
birdLeft.physicsBody = SKPhysicsBody(rectangleOfSize: birdLeft.size)
birdLeft.physicsBody?.dynamic = false
birdLeft.physicsBody?.categoryBitMask = birdCategory
birdLeft.physicsBody?.contactTestBitMask = ballCategory
birdLeft.physicsBody?.collisionBitMask = 0
let foreverAction = SKAction.repeatActionForever(birdMoveLeft)
birdLeft.runAction(foreverAction)
let duration = NSTimeInterval(moverSpeed)
let action = SKAction.moveTo(destination, duration: duration)
birdLeft.runAction(action)
addChild(birdLeft)
}
}
答案 0 :(得分:0)
也许它会受到重力的影响并在您甚至在屏幕上看到对象之前被完全拖下来? 试试这个:
birdRight.physicsBody?.affectedByGravity = false