gpt4 book ai didi

ios - 当spriteSceneNode到达ios SpriteKit中的某个点时如何触发函数

转载 作者:行者123 更新时间:2023-11-29 00:17:50 27 4
gpt4 key购买 nike

我有一个 spritekit 场景,并向其中一个 spriteSceneNode 添加了一些 Action 序列。举例来说,一个名为node1的spriteSceneNode移动到point1,然后它将移动到point2,然后point3等。它是通过使用“SKAction.moveTo”函数实现的。

我的问题是,

是否可以在到达每个点(point1 或 point2 或 point3)时调用自定义函数?

在此处添加一些代码。

 func MoveObjectToAnotherPosition(arrayOfPoints : [CGPoint],object: SKSpriteNode   )  {
let from = object.position


var curPoint1 = object.position


let move = SKAction.move(to: from ,duration: 0.5)
var arrayOfMove : [SKAction] = []
arrayOfMove.append(move)
for point in (arrayOfPoints ) {
let move2 = SKAction.move(to: point,duration: 2.5)

let deltaX = point.x - curPoint1.x
let deltaY = point.y - curPoint1.y
let angle = atan2(deltaY, deltaX)
// let graph = childNode(withName: "Graph1")?
print(angle)
let ang = point.angle(to: curPoint1)
print(ang)
let codeToRunWhenReachingPointX = SKAction.run {
let anglevalue = angle + 90 * self.DegreesToRadians
self.movObject.zPosition = anglevalue
print(anglevalue)
}


//print(anglevalue)
let rotate = SKAction.rotate(byAngle: -angle, duration: 0.0)
arrayOfMove.append(codeToRunWhenReachingPointX)
arrayOfMove.append(move2)
curPoint1 = point
}


let moveToSequence = SKAction.sequence(arrayOfMove)

object.run(moveToSequence)
}

有什么帮助吗?

最佳答案

是的,您可以在 SKAction 完成时调用任何代码。为此,您可以使用 run(_:) 创建一个运行任何代码的 SKAction。 .

因为你想在到达 X 点时调用一些代码,所以我会为每个 X 点添加这样的代码:

let moveToPointX = SKAction.move(to: pointX, duration: someDuration)
arrayOfMove.append(moveToPointX)

let codeToRunWhenReachingPointX = SKAction.run {
// add whatever code you need, e.g. a closure passed to this function
}
arrayOfMove.append(codeToRunWhenReachingPointX)

然后您可以像现在一样通过调用来运行操作序列

let moveToSequence = SKAction.sequence(arrayOfMove)
object.run(moveToSequence)

值得注意的是,运行操作序列不会等待 codeToRunWhenReachingPointX 完成后再移至下一个点。假设您有 SKActions [m1, c1, m2, c2] 数组,其中 m 是您的移动 Action ,c 是您的“运行代码” Action 。当您运行此序列时,将发生以下情况:m1 将运行,完成后 c1 将运行,然后不等待 c1 完成,m2 将运行,当 m2 完成时 c2 将运行。

另请查看 run(_:completion:)方法,其工作原理类似。

希望这对您有所帮助!

关于ios - 当spriteSceneNode到达ios SpriteKit中的某个点时如何触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44825641/

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