gpt4 book ai didi

ios - SpriteKit 移动到 X :duration from Current Stat

转载 作者:行者123 更新时间:2023-11-29 02:51:57 24 4
gpt4 key购买 nike

我计划在 x 轴上从左到右随机移动一批 Sprite ,比如 0 到 320 并且从右到左说 320 到 0,有一些恒定持续时间,

此外,我将每个 Sprite 放置在 x 轴上的随机位置,

但是当我创建我的一批 sprite 并对每个 Sprite 应用该 skaction 时

 SKAction *moveRight  = [SKAction moveToX:320 duration:walkAnim.duration];
SKAction *moveLeft = [SKAction moveToX:0 duration:walkAnim.duration];

一段时间后,整批 Sprite 都朝着一个方向移动,从左到右,然后从右到左

我知道问题出在我的方法和 moveToXConstant duration

在我的情况下,我需要恒定持续时间,我们在moveToX中是否有一些东西,就像我们在

中一样
 [UIView setAnimationBeginsFromCurrentState:YES]

这样我就可以解决在 x 轴上具有随机位置的批量 Sprite 的问题

注意当我给每个 Sprite 一些空间来调用该 Action 时,它工作正常,但我一次需要所有。

可以从 here 获取示例应用程序

编辑

我需要什么我已经更新了代码here

但我需要骰子上出现的所有 Sprite ,没有任何时间间隔,并且对所有 Sprite 应用相同的操作。

如有任何建议,我们将不胜感激
谢谢
乌默尔

最佳答案

为了获得恒定的速度,您需要根据 Sprite 的当前位置计算第一次移动 Action 的持续时间。完成第一步移动后,您可以使用 moveRightmoveLeft 操作。这是开始向右移动的示例。

CGFloat durationForFullDistance = walkAnim.duration;
CGFloat fullDistance = 320;
CGFloat firstDistance = fullDistance - sprite.position.x;
CGFloat durationForFirstMove = durationForFullDistance*firstDistance/fullDistance;

SKAction *firstMoveRight = [SKAction moveToX:320 duration:durationForFirstMove];
SKAction *moveRight = [SKAction moveToX:320 duration:durationForFullDistance];
SKAction *moveLeft = [SKAction moveToX:0 duration:durationForFullDistance];

SKAction *continousMove = [SKAction sequence:@[
firstMoveRight,
[SKAction repeatActionForever:[SKAction sequence:@[
moveLeft,
moveRight
]]]
]];
]]

关于ios - SpriteKit 移动到 X :duration from Current Stat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24384313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com