【发布时间】:2016-11-17 23:59:53
【问题描述】:
我的目标:让 SKSpriteNode 移动到另一个 SKSpriteNodes 位置。 (为我的精灵套件游戏创建磁铁)
嗨,我正在尝试让多个具有相同名称的 SKSpriteNode 移动并与我将要称为磁铁的精灵节点碰撞我只是不明白我将在哪里或如何去做,我已经尝试过使用此代码,但我不知道该怎么做:
func update(_ currentTime: TimeInterval) {
let node = childNode(withName: "specialObstacle")
let magnetLocation = magnet.position
let specialObjectLocation = node?.position
let x = node?.position.x - magnetLocation.x
let y = node?.position.y - magnetLocation.y
}
注意:我的磁铁位置会发生变化,因为用户将在屏幕上移动磁铁并希望它继续朝着磁铁移动,但我就是不知道该怎么做。
编辑 1
我尝试使用你有旋风的代码,它似乎适用于 x 轴,但它似乎不适用于 y 轴,由于某种原因,它看起来像是试图下降但失败并且只是在一个振动点。我在下面添加了我的代码和一张图片
这里是我正在使用的代码:
let playerLocation:CGPoint = self.convert(thePlayer.position, from: worldNode)
let location = playerLocation
let nodeSpeed:CGFloat = 3.5
worldNode.enumerateChildNodes(withName: "levelUnit"){
node, stop in
let levelUnit:LevelUnit = node as! LevelUnit //cast as an actual LevelUnit class
levelUnit.enumerateChildNodes(withName: "specialObstacle"){
node, stop in
//Aim
let dx = location.x - (node.position.x)
let dy = location.y - (node.position.y)
let angle = atan2(dy, dx)
node.zRotation = angle
//Seek
let vx = cos(angle) * nodeSpeed
let vy = sin(angle) * nodeSpeed
node.position.x += vx
node.position.y += vy
}
}
【问题讨论】:
-
SKFieldNode 有磁场
-
@Knight0fDragon 您能否提供一个有关如何使用 SKFieldNode 的示例,因为这是我第一次听说它并且找不到任何深入的教程来告诉我它们如何工作或如何实施它们
-
没用过,只知道它有你想要的。从文档开始。developer.apple.com/reference/spritekit/skfieldnode
-
@Knight0fDragon 在不使用 SKFieldNode 的情况下还有其他方法吗?
-
当然可以,但是您为什么要这样做?你有工具学习如何使用它,猜测,犯错误
标签: swift sprite-kit position skspritenode