【发布时间】:2015-05-21 00:28:33
【问题描述】:
我目前声明了以下函数,这些函数将节点移动到在场景的更新函数中调用的目标位置(在这种情况下,我不能使用 SKAction.moveTo)
func moveTowardsPosition(targetPosition: CGPoint, withTimeInterval timeInterval: NSTimeInterval) {
let currentPosition = self.position
var deltaX = targetPosition.x - currentPosition.x
var deltaY = targetPosition.y - currentPosition.y
var maximumDistance = 3 * CGFloat(timeInterval)
moveFromCurrentPosition(currentPosition, byDeltaX: deltaX, deltaY: deltaY, maximumDistance: maximumDistance)
}
func moveFromCurrentPosition(currentPosition: CGPoint, byDeltaX dx: CGFloat, deltaY dy: CGFloat, maximumDistance: CGFloat) {
let targetPosition = CGPointMake(currentPosition.x + dx, currentPosition.y + dy)
var distRemaining = hypot(dx, dy)
if distRemaining < maximumDistance {
position = targetPosition
} else {
let x = currentPosition.x * maximumDistance
let y = currentPosition.y * maximumDistance
position = CGPointMake(x, y)
}
}
(这些都是从苹果的“冒险”游戏中稍微修改的)
我的问题是 moveCurrentPosition 函数中的这些行。
let x = currentPosition.x * maximumDistance
let y = currentPosition.y * maximumDistance
position = CGPointMake(x, y)
基本上,我不知道将 x 和 y 设置为什么值,以便该位置代表正确的位置。 在 Apple 的示例中,他们将其乘以 maximumDistance - 角度。角度 var 是一个仅影响资产旋转的值,但是我的资产是“静态的”并且没有多个位置——只有 1 个。
考虑到这一点,我会将 x 和 y 设置为什么,以便它们代表正确的位置?
(您可以在此处查看 Apple 的示例:https://developer.apple.com/library/prerelease/ios/samplecode/Adventure-Swift/Listings/Swift_Adventure_Adventure_Shared_Sprites_Character_swift.html)
【问题讨论】:
标签: ios swift sprite-kit