小编Alb*_*ert的帖子

Sprite Kit设置Min.和马克斯.跳跃

我想在上面移动一个SKSpriteNode Y-Axis.名为Player的SKSpriteNode没有Velocity.播放器只有在平台接触时才能跳转.

每次触摸屏幕时,我都想给玩家一个最小冲动或最大冲动的冲动

如果屏幕很快被点击,最小脉冲应该是例如y = 50.如果屏幕被保持,这意味着手指在屏幕上长,最大值应该是例如y = 100.

但是玩家也应该能够在最小高度和最高高度之间跳跃,如果对于例如屏幕不长但也没有很快按下,玩家应该只能得到一个冲动y = 70.

如果屏幕被保持,播放器应该跳到他的最大高度,跌倒,如果它再次与平台接触,它应该跳,因为你仍然按住屏幕.

我已经尝试过这个线程中的建议答案:StackOverFlow 但是这不会给出最小跳跃,也没有按下跳转.

为清楚起见:冲击不应该在敲击完成后,而是在敲击时.你握的时间越长,跳跃的时间就越长.

import SpriteKit
import GameKit

struct Constants {

static let minimumJumpForce:CGFloat = 40.0
static let maximumJumpForce:CGFloat = 60.0
static let characterSideSpeed:CGFloat = 18.0
}

class GameScene: SKScene, SKPhysicsContactDelegate {

var Player: SKSpriteNode!

var Platform0: SKSpriteNode!

var World: SKNode!
var Camera: SKNode!

var force: CGFloat = 40.0

var pressed = false

var isCharacterOnGround = false

.....

func …
Run Code Online (Sandbox Code Playgroud)

game-physics ios sprite-kit swift

14
推荐指数
1
解决办法
1325
查看次数

节点上的精灵套件相机

我做了一个平台游戏并将相机指向主节点播放器.

我已经浏览了Apple文档,可以在这里找到:Apple

大约有6个平台,self.frame.size.height / 4.5它们之间有空格,每当它们dy = -15再次位于屏幕顶部时应重新生成,以使其成为无限循环.

我有一个播放器节点,每次触摸屏幕时都会产生一个冲动(播放器上下跳动).整场比赛只会继续前进y-Axis.

我创建的相机专注于播放器,每当玩家跳跃平台向下移动并且玩家向上移动时.然而,这只是观点,而不是现实世界的立场.这意味着,给定的位置SpawnPlatforms总是相同的,因为它们不移动,只有坚持播放器的视图上下移动.

我想在我的播放器节点上安装摄像头,它在y轴上移动,当它进一步向上时,平台也应该向下移动,此时只有视图改变,我无法使用更新:重建平台的方法.我怎么能改变呢?

编辑:我让我的代码使用了更新Update:Method,但这仍然没有回答我的初始问题,如何使用相机移动整个世界,而不仅仅是相机.

override func didMoveToView(view: SKView) {
    /* Setup your scene here */

    self.physicsWorld.contactDelegate = self
    self.anchorPoint = CGPoint(x: 0, y: 0.30)

    backgroundColor = SKColor(red: 81.0/255.0, green: 192.0/255.0, blue: 201.0/255.0, alpha: 1.0)

    self.World = SKNode()
    self.World.name = "World"
    addChild(World)

    self.Camera = SKNode()
    self.Camera.name = "Camera"
    self.World.addChild(Camera)

    SpawnPlatforms()
    SpawnPlayer()
}

func SpawnPlatforms() {

    Platform0 = SKSpriteNode (color: SKColor.greenColor(), size: CGSize(width: …
Run Code Online (Sandbox Code Playgroud)

camera ios sprite-kit swift

13
推荐指数
1
解决办法
2003
查看次数

Sprite Kit停止Impulse

我想CGFloat在屏幕点击时每次增加一次.浮点数具有设定的最大值和最小值.我试图通过这个建议:StackOverflow

但是,这只会在触摸后增加CGFloat,或达到最大值.我想触摸期间增加CGFloat ,这意味着你触摸的时间越长,Jump/CGFloat越高.

问题可能在于冲动,在应用之后你无法改变它.这意味着,在'玩家'获得20的冲动,并且屏幕被更长时间触摸后,浮动可能会增加,但冲动不会.

如果查看我当前的代码,触摸屏幕时脉冲设置为最大值,但如果释放,则应删除该操作.但是,它不起作用,冲动不会停止.

我知道你可以在按下之后将身体的速度设置为一个值,如果按下已经结束速度回到0,那么它会停止它'跳',但是看起来并不是很平滑有冲动.

有人有解决方案吗?

struct Constants {

static let minimumJumpForce:CGFloat = 20.0
static let maximumJumpForce:CGFloat = 60.0
}

class GameScene: SKScene, SKPhysicsContactDelegate {

var force: CGFloat = 20.0

func longPressed(longPress: UIGestureRecognizer) {

    if (longPress.state == UIGestureRecognizerState.Began) {

        println("Began")

        self.pressed = true

        let HigherJump = SKAction.runBlock({Player.physicsBody?.applyImpulse(CGVectorMake(0, Constants.maximumJumpForce))})

        self.runAction(HigherJump , withKey:"HighJump")

    }else if (longPress.state == UIGestureRecognizerState.Ended) {

        println("Ended")

        self.pressed = false

        self.removeActionForKey("HighJump")

    }

}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { …
Run Code Online (Sandbox Code Playgroud)

physics ios sprite-kit swift

10
推荐指数
1
解决办法
472
查看次数

标签 统计

ios ×3

sprite-kit ×3

swift ×3

camera ×1

game-physics ×1

physics ×1