Ios SpriteKit摩擦似乎无法正常工作

Ios SpriteKit摩擦似乎无法正常工作,ios,swift,sprite-kit,xcode7,Ios,Swift,Sprite Kit,Xcode7,在Xcode 7中的一个项目中,我有几个SKSpriteNodes,它们在屏幕上来回移动,还有一个叫做user,它意味着从一个精灵跳到另一个精灵,在屏幕上逐渐向上移动。但是,当user降落在一个移动的精灵上时,移动的精灵正好从它下面滑出,而user则会倒下。我认为这意味着我需要增加节点上的摩擦力属性,以便user能够“粘住”节点,但这只会使它在其他节点上反弹。我的问题是,前后移动的节点似乎“很滑”,而且user无法停留在它们上面 这是我的密码: 用户的我的类: class UserNode: S

在Xcode 7中的一个项目中,我有几个
SKSpriteNodes
,它们在屏幕上来回移动,还有一个叫做
user
,它意味着从一个精灵跳到另一个精灵,在屏幕上逐渐向上移动。但是,当
user
降落在一个移动的精灵上时,移动的精灵正好从它下面滑出,而
user
则会倒下。我认为这意味着我需要增加节点上的摩擦力属性,以便
user
能够“粘住”节点,但这只会使它在其他节点上反弹。我的问题是,前后移动的节点似乎“很滑”,而且
user
无法停留在它们上面

这是我的密码:

用户的我的类

class UserNode: SKSpriteNode
{
    class func newNode(position position: CGPoint) -> UserNode
    {
        let position = position

        let sprite = UserNode(imageNamed: "userImage")
        sprite.position = position
        sprite.size = CGSize(width: sprite.size.width * 2, height: sprite.size.height * 2)
        sprite.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: "userImage"), size: sprite.size)
        sprite.physicsBody?.affectedByGravity = true
        sprite.physicsBody?.dynamic = true
        sprite.physicsBody?.allowsRotation = false
        sprite.physicsBody?.friction = 0.2

        return sprite
    }
}
用于移动
用户
(我的
游戏场景中的方法


你增加了平台上的摩擦力了吗?我猜你是用
SKAction
移动你的“移动”精灵的吧?是的,我试着增加了平台上的摩擦力@gliderman我实际上是通过改变它的速度来移动它的@WangYudong@isaac我知道这是个愚蠢的问题,但是您是否同时增加了平台和
用户的摩擦力?也许需要用脉冲来改变速度?你增加了平台上的摩擦力了吗?我猜你是用
SKAction
来移动“移动”精灵的?是的,我试着增加了平台上的摩擦力@gliderman我实际上是通过改变它的速度来移动它的@WangYudong@isaac我知道这是个愚蠢的问题,但是您是否同时增加了平台和
用户的摩擦力?也许需要用脉冲来改变速度?
let scale: CGFloat = 2.0
let damping: CGFloat = 0.98
var point = CGPoint?()

func moveNodeToPoint(sprite: SKSpriteNode, point: CGPoint)
{
    let dx = (point.x - sprite.position.x) * scale
    let dy = (point.y - sprite.position.y) * scale
    sprite.physicsBody?.velocity = CGVectorMake(dx, dy)
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
    /* Called when a touch begins */
    for _: AnyObject in touches
    {
        if !welcomeNode.hidden
        {
            let fadeAway = SKAction.fadeOutWithDuration(0.3)

            welcomeNode.runAction(fadeAway)
            directionsNode.runAction(fadeAway)
            touchStartNode.runAction(fadeAway)

            welcomeNode.hidden = true
            directionsNode.hidden = true
            touchStartNode.hidden = true
        }

        //////////

        point = CGPointMake(self.frame.midX, user.position.y + 300)


    }
}

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?)
{
    point = nil
}

override func update(currentTime: CFTimeInterval)
{
    /* Called before each frame is rendered */

    if (point != nil)
    {
        moveNodeToPoint(user, point: point!)
    }
    else
    {
        let dx = user.physicsBody!.velocity.dx * damping
        let dy = user.physicsBody!.velocity.dy * damping

        user.physicsBody?.velocity = CGVectorMake(dx, dy)
    }



}
let screenSize = UIScreen.mainScreen().bounds
let width = screenSize.size.width * 2
let firstAction = SKAction.moveBy(CGVector(dx: width, dy: 0), duration: 2)
let secondAction = SKAction.moveBy(CGVector(dx: -width, dy: 0), duration: 2)

let actions = [firstAction, secondAction]
let barAction = SKAction.sequence(actions)
let mainBarAction = SKAction.repeatActionForever(barAction)

platform.runAction(mainBarAction)