我是初学者,我已经开始了我的第一个项目。这应该是一个小游戏,你可以向左和向右跑。但我不知道如何设置相机设置。
如果你能帮助我,我会非常感激,告诉我如何改进我的代码以及出了什么问题。
这是我的代码:
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
var ground:SKSpriteNode = SKSpriteNode()
var hero: MPCharacter!
var tree:MPTree!
override func didMoveToView(view: SKView) {
backgroundColor = UIColor(red: 155.0/255.0, green: 201.0/255.0, blue: 244.0/255.0, alpha: 1.0)
self.anchorPoint = CGPointMake(0.5, 0.5)
// --> hero <--
hero = MPCharacter()
hero.position = CGPointMake(frame.size.width/2, view.frame.size.height/2)
hero.zPosition = 100
hero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(hero.size.width, hero.size.height))
hero.physicsBody!.dynamic = true
addChild(hero)
// --> ground <--
ground = SKSpriteNode(imageNamed: "ground")
ground.size = CGSizeMake(frame.size.width, frame.size.height/3)
ground.position = CGPointMake(frame.size.width/2, frame.size.height/2 - ground.size.height)
ground.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(frame.size.width, ground.size.height - 25))
ground.physicsBody!.dynamic = false
addChild(ground)
// --> Tree <--
tree = MPTree()
tree.position = CGPointMake(frame.size.width/2, ground.size.height + tree.size.height/3 - 10)
tree.zPosition = 10
tree.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(tree.size.width, tree.size.height - 10))
tree.physicsBody!.dynamic = false
addChild(tree)
// --> Physics <--
self.physicsWorld.gravity = CGVectorMake(0, -5.0)
self.physicsWorld.contactDelegate = self
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch:AnyObject in touches {
let location = touch.locationInNode(self)
if location.x < CGRectGetMidX(self.frame) {
hero.physicsBody!.velocity = CGVectorMake(0, 0)
hero.physicsBody!.applyImpulse(CGVectorMake(-5, 10))
}
else {
hero.physicsBody!.velocity = CGVectorMake(0, 0)
hero.physicsBody!.applyImpulse(CGVectorMake(5, 10))
}
}
}
}
答案 0 :(得分:0)
我不太确定你想要实现的目标。一种让你的角色跑步的方法。向左(或向右)是通过在角色正确运行时将背景(和其他游戏对象)移动到左侧(反之亦然)。这样你的角色将始终位于屏幕的中心,因为他并没有真正感动,你创造了一个幻觉。他正在你的游戏世界中移动。给你的角色一个运行动画将使它看起来更好......
Ray Wenderlich的网站上有一个教程,它也涵盖了视差滚动&#39;: http://www.raywenderlich.com/49625/sprite-kit-tutorial-space-shooter
希望这会有所帮助..
答案 1 :(得分:0)
如果您尝试将相机放在播放器中心,Apple Docs会为您提供一个很好的示例over here(我会添加代码,但最好的学习方法是获取你的手脏了)。您可能必须将方法转换为swift,但它是您希望执行的操作的一般实现。上面答案的问题是,如果要移动背景,则必须直接计算力和脉冲,并将逆向量应用于背景。与简单地移动相机相比,这可能需要更多处理。希望这会有所帮助!!