我创建了一个40x40的正方形,如上所示。我有一个4x40的条带,我想用来动画(增加)我的方块的宽度,直到它在一秒钟内占据整个屏幕的宽度,无论方块的位置如何。非常类似于双方加载进度条的情况。
更新
我忘了提到正方形是一个物理体,因此随着精灵的增加,物理体也必须增加。
答案 0 :(得分:2)
您想要做的是使用SKAction.scaleXTo来实现您的目标:
SKAction.scaleXTo(sceneWidth / spriteWidth, duration: 1).
现在,如果您希望左侧和右侧不均匀缩放,而是同时到达两个边缘,您可以做的是更改定位点。
这背后的数学假设您的原始锚点是(0.5,0.5)
sprite.anchorPoint = CGPointMake(sprite.position.x / scene.width,sprite.anchorPoint.y)
E.G。场景大小宽度为100,精灵为x 75
这基本上是说你的精灵在场景的某个百分比,例如75%。因此,通过将锚点更改为.75,当您扩展宽度时,左侧将比右侧填充更快,因为锚点的左侧具有75%的宽度,右侧边有25%的宽度。
假设我们将比例设置为2,这意味着锚点的左侧现在将为150%,而右侧将为50%。
答案 1 :(得分:0)
一般情况下,如果将start_x
设置为原始x,则假设对象的原点位于左上角(或至少左侧,因为我们只在一个轴上更改内容)您的方块的位置,start_width
到其宽度,target_x
到条带的x位置,target_width
到它的宽度,然后:
x = start_x + (target_x - start_x) * a;
和
width = start_width + (target_width - start_width) * a;
当a
从0.0变为1.0时,x
和width
将增长以匹配条带。
希望这有帮助。