gpt4 book ai didi

ios - 贪吃蛇游戏运动问题 Spritekit

转载 作者:行者123 更新时间:2023-11-28 09:15:10 25 4
gpt4 key购买 nike

我正在尝试使用 Swift 和 Spritekit 创建一个基本的贪吃蛇游戏。我有一个 Sprite 在屏幕上移动,当我滑动时它开始向滑动方向移动。我在更新方法中执行此操作,我根据滑动方向、设定速度和固定持续时间更改 Sprite 的位置。

例如direction.x * blockMovePerSecond * CGFloat(actionDuration)

我让 sprite 彼此跟随,但是,一旦我滑动并且第一个 sprite 改变方向,跟随它的那个就会沿对角线移动,而不是像普通的蛇游戏那样首先在 x 轴上然后在 y 轴上移动.

我尝试了以下选项:

  • 尝试保持 Sprite 在每次更新时移动的距离相等到两个 Sprite 之间的距离。然而, Sprite 跑掉了我这样做时的屏幕。
  • 让第一个 sprite 为其余的 sprite 创建一条路径。然而,第二个 Sprite 跑出屏幕,再也不会出现。我认为问题是因为路径是开放的。

这是第一个 Sprite (蛇头)之后的 Sprite 的移动方法代码:

{
var temp:NSValue = lastNodeLocation // the lastnodelocation is from first sprite location
var tempNodeDirection = lastNodeDirection
let actionDuration = 1.0

let distanceToMoveThisFrame = tempNodeDirection.CGPointValue() * blockMovePerSecond * CGFloat(actionDuration)
var currentPosition = NSValue(CGPoint: blocksOfAlphabets[i].position)
let beforeDistance = CGPoint(x: temp.CGPointValue().x - currentPosition.CGPointValue().x, y: temp.CGPointValue().y - currentPosition.CGPointValue().y)


lastNodeLocation = NSValue(CGPoint: blocksOfAlphabets[i].position)
// move node to new location
var moveAction = SKAction.moveTo(temp.CGPointValue(), duration: 1.0)
node.runAction(moveAction)
}

有人可以帮忙吗?

谢谢术赤

最佳答案

您的问题是 runAction 方法不等待完成。因此,如果您在 Sprite 已经在运行 Action 时调用另一个 runAction 方法,新 Action 将立即开始。

您可以使用序列首先完成 x 轴:SKAction:sequence

关于ios - 贪吃蛇游戏运动问题 Spritekit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28049072/

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