将相机对准角色

时间:2015-05-05 19:40:47

标签: ios swift camera

我是初学者,我已经开始了我的第一个项目。这应该是一个小游戏,你可以向左和向右跑。但我不知道如何设置相机设置。

如果你能帮助我,我会非常感激,告诉我如何改进我的代码以及出了什么问题。

这是我的代码:

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))
        }
    }
  }
}

2 个答案:

答案 0 :(得分:0)

我不太确定你想要实现的目标。一种让你的角色跑步的方法。向左(或向右)是通过在角色正确运行时将背景(和其他游戏对象)移动到左侧(反之亦然)。这样你的角色将始终位于屏幕的中心,因为他并没有真正感动,你创造了一个幻觉。他正在你的游戏世界中移动。给你的角色一个运行动画将使它看起来更好......

Ray Wenderlich的网站上有一个教程,它也涵盖了视差滚动&#39;: http://www.raywenderlich.com/49625/sprite-kit-tutorial-space-shooter

希望这会有所帮助..

答案 1 :(得分:0)

如果您尝试将相机放在播放器中心,Apple Docs会为您提供一个很好的示例over here(我会添加代码,但最好的学习方法是获取你的手脏了)。您可能必须将方法转换为swift,但它是您希望执行的操作的一般实现。上面答案的问题是,如果要移动背景,则必须直接计算力和脉冲,并将逆向量应用于背景。与简单地移动相机相比,这可能需要更多处理。希望这会有所帮助!!