在 spritekit 中使用 anchorPoint 到每个节点

Posted

技术标签:

【中文标题】在 spritekit 中使用 anchorPoint 到每个节点【英文标题】:Using anchorPoint in spritekit to each node 【发布时间】:2014-01-27 08:36:20 【问题描述】:

我想知道我的设置 ball.position 函数,重点是将球的点设置到其他 spritenode(左/中/右侧),我尝试编写自己的函数,但它充满了错误,(它是评论),接下来在审查开发人员库之后。我找到了父位置的锚点,但它不起作用,我不知道如何为球设置当前父级。我将非常感谢您的一些建议。

    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);
        
  

【问题讨论】:

什么是blockemitter 是什么? block1?后期场景结构 【参考方案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;

希望这就是你想要的。

【讨论】:

以上是关于在 spritekit 中使用 anchorPoint 到每个节点的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xcode 6 Playground 中使用 SpriteKit

在SpriteKit中使用平移手势识别器

如何在 spritekit 中使用页面控件? (以编程方式)

在 SpriteKit 中使用平移手势识别器

无法在 SpriteKit 中正确移动入侵者

在 SpriteKit 中呈现图像的最佳方式