【问题标题】:sprite kit - Sprite randomly drifting upwards after rotationsprite kit - 旋转后 Sprite 随机向上漂移
【发布时间】:2015-06-18 10:28:21
【问题描述】:

为了简单起见,场景有一个圆形精灵和一个方形精灵。方形精灵是围绕圆形精灵跟随的 SKNode 的子节点,因此方形的旋转始终围绕圆形进行。然而,当节点旋转时,正方形随机向上漂移。一旦旋转一直进行,这种行为就会停止。代码如下:

_square = [SKSpriteNode spriteNodeWithImageNamed:@"square"]; 
_circle = [SKSpriteNode spriteNodeWithImageNamed:@"circle"];
_circle.position = CGPointMake(-200, 300);
[self addChild:_circle];
_rotateNode = [SKNode node];
_rotateNode.position = CGPointMake(300, 300);
[self addChild:_rotateNode];
[_rotateNode addChild:_square];


SKAction *moveBall = [SKAction moveTo:CGPointMake(1200, 300) duration:12];
[_circle runAction:moveBall];

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
SKAction *rotate = [SKAction rotateByAngle:-M_PI_2 duration:0.2];
[_rotateNode runAction:rotate];

}

-(void)update:(CFTimeInterval)currentTime {

_rotateNode.position = _circle.position;
double xOffset = (300 -_circle.position.x);
double yOffset = (300 - _circle.position.y);
_square.position = CGPointMake(xOffset, yOffset);

}

有人知道为什么会这样吗?

【问题讨论】:

  • 该代码看起来无法编译,因为您将 CGPoint 添加为 self.您在第 3 行第二次分配 _circle 时是否有错字?

标签: ios sprite-kit


【解决方案1】:

如果我理解了这个问题,您是在问为什么正方形会以意想不到的方式移动?圆圈在移动,但在每一帧上,您都将 rotateNode 的位置设置为与圆圈相同,并且它们都有相同的父节点:self,因此我们可以忽略圆圈进行任何调试,因为它只是在每一帧执行它的动作换个新职位。

奇怪的是,很可能是因为您手动重新定位rotateNode,然后它会移动它的所有子节点,包括正方形。但是在每一帧中,您还需要手动重新定位正方形。所以 rotateNode 旋转,改变 square 的位置,因为它旋转了,然后你重新定位 square 以获得固定的偏移量。取决于您的目标是将正方形放置在世界空间还是父空间中,这会更加复杂。但不清楚你的目标是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多