在spritekit中使用anchorPoint到每个节点

时间:2014-01-27 08:36:20

标签: ios objective-c sprite-kit

我想知道我的设置ball.position函数,重点是将球的点设置为其他spritenode(在左/中/右侧),我试图编写我自己的函数,但它充满了bug,(它是评论),然后审查开发人员lib的。我找到了anchorPoint到父位置,但它不起作用,我不确切知道如何设置球的当前父级。我会非常感谢你的一些建议。

    if (ball.position.y < block.position.y +10 && ball.position.y > block.position.y -10) {     
        midX = CGRectGetMidX(self.frame);
        side = block1.size.width/2;

        if (emitter.position.x < midX - side+5) {
            //  fixedEmitterPos = emitter.position.x+side;
            ball.anchorPoint = CGPointMake(0,0.5);
        }
        if (emitter.position.x > midX + side-5){
            //  fixedEmitterPos = emitter.position.x-side;
            ball.anchorPoint = CGPointMake(1,0.5);
        }
        if (emitter.position.x == 160) {
            //  fixedEmitterPos = emitter.position.x;
            ball.anchorPoint = CGPointMake(0.5,0.5);
        }
  }

1 个答案:

答案 0 :(得分:1)

我不知道您的问题究竟是什么,但是要更改您的锚点,您不会更改父节点中的任何内容。例如,如果锚点是

ball.anchorPoint = CGPointMake(0.5,0.5);

锚点正好在中间,如果你改变球的位置,如:

ball.position == CGPointMake(50,50);

球中心正好在那个位置(50,50)。

但是如果锚点是:

ball.anchorPoint = CGPointMake(1, 1);

并将位置更改为:

ball.position == CGPointMake(50,50);

球中心将在

X = 50 - (ball width / 2)
Y = 50 - (ball height / 2)

如果你想在其他精灵节点上设置球位置,你可以这样做:

//Attach left centre side of ball to other sprite:
ball.anchorPoint = CGPointMake(0, 0.5);
ball.position.x == otherSprit.position.x + otherSprit.size.with;
ball.position.y == otherSprit.position.y;

//Attach right centre side of ball to other sprite:
ball.anchorPoint = CGPointMake(1, 0.5);
ball.position.x == otherSprit.position.x;
ball.position.y == otherSprit.position.y;

希望这就是你的意思。