【发布时间】:2015-03-27 01:01:52
【问题描述】:
嘿,我有一个项目,其中玩家应该像 Mega Jump 一样向上,我想为玩家设置动画,以便当它向左或向右或向下移动时,它会根据它改变其图像。有什么想法可以实现这一目标吗?这是我创建播放器的代码。
class GameScene: SKScene, SKPhysicsContactDelegate {
let foregroundNode = SKNode()
let player = SKNode()
override init(size: CGSize) {
super.init(size: size)
physicsWorld.gravity = CGVector(dx: 0.0, dy: -3.0)
physicsWorld.contactDelegate = self
foregroundNode = SKNode()
addChild(foregroundNode)
player = createPlayer()
foregroundNode.addChild(player)
}
func createPlayer() -> SKNode {
let playerNode = SKNode()
playerNode.position = CGPoint(x: self.size.width / 2, y: 80.0)
var spriteTexture = SKTexture(imageNamed: "IMAGE")
var sprite = SKSpriteNode(texture: spriteTexture)
playerNode.addChild(sprite)
playerNode.physicsBody = SKPhysicsBody(circleOfRadius: sprite.size.width / 2)
playerNode.physicsBody?.dynamic = false
playerNode.physicsBody?.allowsRotation = false
playerNode.physicsBody?.restitution = 1.0
playerNode.physicsBody?.friction = 0.0
playerNode.physicsBody?.angularDamping = 0.0
playerNode.physicsBody?.linearDamping = 0.0
playerNode.physicsBody?.usesPreciseCollisionDetection = true
playerNode.physicsBody?.categoryBitMask = CollisionCategoryBitmask.Player
playerNode.physicsBody?.collisionBitMask = 0
playerNode.physicsBody?.contactTestBitMask = CollisionCategoryBitmask.Star | CollisionCategoryBitmask.Platform | CollisionCategoryBitmask.Monster
return playerNode
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
if player.physicsBody!.dynamic {
return
}
tapToStartNode.removeFromParent()
player.physicsBody?.dynamic = true
player.physicsBody?.applyImpulse(CGVector(dx: 0.0, dy: 30.0))
}
override func update(currentTime: NSTimeInterval) {
var spriteTexture = SKTexture(imageNamed: "IMAGE")
var sprite = SKSpriteNode(texture: spriteTexture)
if (player.physicsBody?.velocity.dx < 0) && (player.physicsBody?.velocity.dy > 0) {
sprite.texture = SKTexture(imageNamed: "IMAGE LEFT")
} else if (player.physicsBody?.velocity.dx > 0) && (player.physicsBody?.velocity.dy > 0){
sprite.texture = SKTexture(imageNamed: "IMAGE RIGHT")
}
我不知道我是走在正轨还是做错了,我还在学习 sprite kit 和 swift。但是,如果有人可以帮助我实现这一目标,我将不胜感激!提前谢谢你
【问题讨论】:
-
你应该在你的
SKScene对象上设置physicsBody。
标签: swift xcode6 sprite-kit