我正在建立一个平台游戏,我想让摄像机(如果可能的话,顺利地)跟随玩家,当他跳跃。但如果玩家处于游戏的较低位置,我不希望它发生。
我已经有一个名为sceneLower
的var,它是场景的较低位置,我有这个代码(不完整):
var cameraOk = false;
var cameraMoving = false
func moveCamera(position: CGFloat = 0, toPlayer: Bool = false) {
if !self.cameraOk {
cameraMoving = true
let action = SKAction.moveToY((toPlayer ? Player.position.y + 100 : position), duration: 0.6)
//SKAction.moveBy(CGVector(dx: 0, dy: by), duration: 0.1)
self.cam.runAction(SKAction.sequence([action, SKAction.runBlock({
self.cameraOk = true
self.cameraMoving = false
})]))
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
if (Player.position.y > sceneLower + self.frame.height / 2) {
if !cameraOk {
moveCamera(toPlayer: true)
}
if (!cameraMoving) {
self.cam.position.y = Player.position.y + 100
cameraOk = true
}
} else {
if (!cameraMoving) {
moveCamera(cameraInitPosition)
}
}
我希望相机只有在他处于场景的中高位置时跟随播放器,如果他回到较低位置,我希望相机跟随他。我不知道如何实现这一目标。
如果您有任何问题,请发表评论。
答案 0 :(得分:1)
if (!cameraMoving) {
moveCamera(cameraInitPosition)
}
如果您将其更改为:
,该怎么办?if (cam.position != cameraInitPosition) {
moveCamera(cameraInitPosition)
}
答案 1 :(得分:0)
这是此问题的伪代码。
if playerInJumpingState {
camera.position += player.deltaPosition
}
此处,只有当玩家处于跳跃动画状态时,playerInJumpingState才为真。
然后,你要做的是在帧(前一帧和当前帧)之间添加玩家位置的差异,即deltaPosition到相机的位置。这样,相机将在他/她跳跃时跟随玩家。
注意:当他重新回到地面时,不要忘记将playerInJumpingState设置为false。
亲切的问候,
Suman Adhikari