【发布时间】:2013-12-02 00:20:28
【问题描述】:
我正在使用 SpriteKit 并致力于在屏幕上移动 SKSpriteNodes 的系统。我在调用移动方法之前设置了两个全局变量:positionAndMovementX 和 positionAndMovementY,我尝试过将它们作为整数和浮点数。在调用移动我的 SKSpriteNode 的方法之前,这两个变量都将设置为 0、80 或 -80。然后我运行:
if (emptySpace.position.x == yellowBug.position.x + positionAndMovementX &&
emptySpace.position.y == yellowBug.position.y + positionAndMovementY)
{
SKAction *moveLeft = [SKAction moveByX:positionAndMovementX y:positionAndMovementY duration:.1];
[yellowBug runAction: moveLeft];
}
不幸的是,这将适用于几个动作,但在 5 左右之后,x 或 y 值将变得不精确并减少或增加 .000015 或其他东西,所以现在不是 200、180,而是 200, 179.999985,我的方程将不再计算。我尝试将位置更改为整数并返回,但由于某种原因,179.999985 更改为 179 而不是 180,所以我尝试如下舍入:
int posX = lroundf(yellowBug.position.x);
int posY = lroundf(yellowBug.position.y);
[yellowBug setPosition:CGPointMake(posX, posY)];
但这似乎又将变量留在了 179.999985... 帮助? (对不起,如果这是一个菜鸟问题,我还是个初学者)
【问题讨论】:
标签: sprite-kit skaction