【发布时间】:2015-12-17 07:31:43
【问题描述】:
我有一个节点在屏幕上以 400pps 的速度移动。我想在节点到达屏幕上的精确位置时停止它。我通过在更新周期中将节点速度设置为 0 来做到这一点。
但是,节点以不可预测的量移动通过所需的点,并在稍后的某个地方停止。 我怀疑问题出在响应时间上。简单地说,物理引擎不够快,无法准确停止节点。我的应用在 Mac 上以 30fps 的速度运行,在 iPhone 5S 上以 60fps 的速度运行。
实现准确的节点移动和停止的最佳方法是什么?我想我可以在停止节点后将节点重新定位到所需的位置,但这可能会扰乱整个物理世界。 这就是我的更新方法的相关部分的样子:
- (void)update:(NSTimeInterval)currentTime {
// Start moving
if(verticalScrollSpeed) {
node.physicsBody.velocity = CGVectorMake(0, verticalScrollSpeed);
}
// Stop moving
if(verticalScrollSpeed > 0 && obstaclesContainerNode.position.y >= 0) {
verticalScrollSpeed = 0;
node.physicsBody.velocity = CGVectorMake(0, 0);
}
}
【问题讨论】:
标签: objective-c sprite-kit sprite skphysicsbody