在带有 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)。
这个函数实际上是在每一帧重新触发一个精灵移动动作,但是随着每一帧的移动距离变小,而动作到运行的时间是一样的,所以它产生了减速效果: )
我不得不重写一些关于什么时候调用的代码,并摆脱了这个愚蠢的错误。
现在一切正常:)
但是模拟减速的一个有趣的技巧:)
我没有设置任何物理,也没有使用场景文件。我只是从代码设置场景。
这是我设置和启动操作的地方:
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)。
这个函数实际上是在每一帧重新触发一个精灵移动动作,但是随着每一帧的移动距离变小,而动作到运行的时间是一样的,所以它产生了减速效果: )
我不得不重写一些关于什么时候调用的代码,并摆脱了这个愚蠢的错误。
现在一切正常:)
但是模拟减速的一个有趣的技巧:)