问题
I am using the code below to move my sprite from one position to another.
let screenScale: CGFloat = UIScreen.mainScreen().scale
var travelSpeed: CGFloat = 20*screenScale
let displacement = CGVector(dx: destination.x-enemy!.sprite.position.x, dy: destination.y-enemy!.sprite.position.y)
let radius = sqrt(displacement.dx*displacement.dx+displacement.dy*displacement.dy)
let normal = CGVector(dx: displacement.dx/radius, dy: displacement.dy/radius)
let impulse = CGVector(dx: normal.dx*travelSpeed, dy: normal.dy*travelSpeed)
let relativeVelocity = CGVector(dx:impulse.dx-enemy!.sprite.physicsBody!.velocity.dx, dy:impulse.dy-enemy!.sprite.physicsBody!.velocity.dy);
enemy!.sprite.physicsBody!.velocity=CGVectorMake(enemy!.sprite.physicsBody!.velocity.dx+relativeVelocity.dx*rate, enemy!.sprite.physicsBody!.velocity.dy+relativeVelocity.dy*rate);
But when I tested it on my iPhone 6S Plus the sprite moved considerably faster than on my iPhone 5. I thought the line below caters for the different dimensions, since I am using the screen scale:
var travelSpeed: CGFloat = 20*screenScale
Or am I missing something?
来源:https://stackoverflow.com/questions/39234362/sprite-velocity-speed-is-varies-on-different-devices