在带有 swift 的 sprite 套件中,当我 运行 节点上的一个动作将其移动到某个 y 值时,它会逐渐减速。为什么?

In sprite kit with swift when i run an action on a node to move it up to a certain y value it gradually slows down. Why?

我没有设置任何物理,也没有使用场景文件。我只是从代码设置场景。

这是我设置和启动操作的地方:

  let GoUpAction = SKAction.moveTo(CGPoint(x:80,y:size.height-hVar),duration:1);
    if node1.position.y < (size.height/6) + 20 {
        node2.runAction(GoUpAction)
    }

当它执行时,node2 开始以正常速度向上移动,但越高 (y++) 它移动得越慢。

有趣的是 - 总的来说,这种行为适合我,但我很欣赏从距离目的地仅 1/4 开始的减速。或者根本没有减速。

我没有设置任何重力或任何东西。非常基本的设置。

节点是这样定义的:

    let node2 = SKSpriteNode(imageNamed: "n2")
    node2.name = "n2"
    node2.position = CGPoint(x: size.width-80, y: size.height-hVar)
    node2.xScale = 0.25
    node2.yScale = 0.25
    node2.zPosition = -1
    addChild(node2)

I didn't set any gravity or anything. very basic setup.

默认值为 (0.0,-9.8),这可能会使您的节点在 y 方向上变慢。尝试设置 属性 affectedByGravity 或 body,

node2.physicsBody.affectedByGravity = NO;

或在创建场景时设置"global"gravity

self.physicsWorld.gravity = CGVectorMake(0.0f, 0.0f);

摆脱地心引力。

谢谢大家的帮助!

但是这个问题有点结构性。我犯了一个愚蠢的错误,我没有仔细考虑通过从 Update 方法调用某个函数(每帧 运行s)。

这个函数实际上是在每一帧重新触发一个精灵移动动作,但是随着每一帧的移动距离变小,而动作到运行的时间是一样的,所以它产生了减速效果: )

我不得不重写一些关于什么时候调用的代码,并摆脱了这个愚蠢的错误。

现在一切正常:)

但是模拟减速的一个有趣的技巧:)