Swift and Sprite Kit - How can I measure the total distance a sprite has travelled?
up vote
2
down vote
favorite
In my game, the player sprite travels continiously upwards as I have set the velocity of the sprite in the update function with:
override func update(_ currentTime: TimeInterval) {
...
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
}
Now I would like to measure the total distance the sprite has travelled. Is there any way/method to do so or do I have to make a variable to manually count the distance, e.g.
var distance:Float
override func update(_ currentTime: TimeInterval) {
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
distance += 650
}
Thanks in advance!
ios swift sprite-kit
add a comment |
up vote
2
down vote
favorite
In my game, the player sprite travels continiously upwards as I have set the velocity of the sprite in the update function with:
override func update(_ currentTime: TimeInterval) {
...
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
}
Now I would like to measure the total distance the sprite has travelled. Is there any way/method to do so or do I have to make a variable to manually count the distance, e.g.
var distance:Float
override func update(_ currentTime: TimeInterval) {
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
distance += 650
}
Thanks in advance!
ios swift sprite-kit
keep track of your starting location and just use the distance formula
– Knight0fDragon
Nov 20 at 13:55
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
In my game, the player sprite travels continiously upwards as I have set the velocity of the sprite in the update function with:
override func update(_ currentTime: TimeInterval) {
...
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
}
Now I would like to measure the total distance the sprite has travelled. Is there any way/method to do so or do I have to make a variable to manually count the distance, e.g.
var distance:Float
override func update(_ currentTime: TimeInterval) {
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
distance += 650
}
Thanks in advance!
ios swift sprite-kit
In my game, the player sprite travels continiously upwards as I have set the velocity of the sprite in the update function with:
override func update(_ currentTime: TimeInterval) {
...
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
}
Now I would like to measure the total distance the sprite has travelled. Is there any way/method to do so or do I have to make a variable to manually count the distance, e.g.
var distance:Float
override func update(_ currentTime: TimeInterval) {
player.physicsBody!.velocity.dy = max(player.physicsBody!.velocity.dy, 650 * gameGain)
distance += 650
}
Thanks in advance!
ios swift sprite-kit
ios swift sprite-kit
edited Nov 20 at 15:33
Tamás Sengel
25.9k146592
25.9k146592
asked Nov 20 at 13:25
Linh Kästner
112
112
keep track of your starting location and just use the distance formula
– Knight0fDragon
Nov 20 at 13:55
add a comment |
keep track of your starting location and just use the distance formula
– Knight0fDragon
Nov 20 at 13:55
keep track of your starting location and just use the distance formula
– Knight0fDragon
Nov 20 at 13:55
keep track of your starting location and just use the distance formula
– Knight0fDragon
Nov 20 at 13:55
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
If you are interested in the distance from the starting location to the current location, you can remember the start location and then calculate the distance:
let startPosition: CGPoint
var distance: CGFloat
init(startLocation: CGPoint) {
self.startPosition = startPosition
distance = 0
}
// Calculate the distance between two points using Pythagoras. You can make your code clean, by moving this into an extension for CGPoint.
private func distance(point1: CGPoint, point1: CGPoint) -> CGFloat {
let dx = point1.x - point2.x
let dy = point1.y - point2.y
return sqrt(dx * dx + dy * dy);
}
override func update(_ currentTime: TimeInterval) {
// Move the sprite
let newPlayerPosition = player.position
distance = distance(point1: newPlayerPosition, point2: startPosition)
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53394005%2fswift-and-sprite-kit-how-can-i-measure-the-total-distance-a-sprite-has-travell%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
If you are interested in the distance from the starting location to the current location, you can remember the start location and then calculate the distance:
let startPosition: CGPoint
var distance: CGFloat
init(startLocation: CGPoint) {
self.startPosition = startPosition
distance = 0
}
// Calculate the distance between two points using Pythagoras. You can make your code clean, by moving this into an extension for CGPoint.
private func distance(point1: CGPoint, point1: CGPoint) -> CGFloat {
let dx = point1.x - point2.x
let dy = point1.y - point2.y
return sqrt(dx * dx + dy * dy);
}
override func update(_ currentTime: TimeInterval) {
// Move the sprite
let newPlayerPosition = player.position
distance = distance(point1: newPlayerPosition, point2: startPosition)
}
add a comment |
up vote
1
down vote
If you are interested in the distance from the starting location to the current location, you can remember the start location and then calculate the distance:
let startPosition: CGPoint
var distance: CGFloat
init(startLocation: CGPoint) {
self.startPosition = startPosition
distance = 0
}
// Calculate the distance between two points using Pythagoras. You can make your code clean, by moving this into an extension for CGPoint.
private func distance(point1: CGPoint, point1: CGPoint) -> CGFloat {
let dx = point1.x - point2.x
let dy = point1.y - point2.y
return sqrt(dx * dx + dy * dy);
}
override func update(_ currentTime: TimeInterval) {
// Move the sprite
let newPlayerPosition = player.position
distance = distance(point1: newPlayerPosition, point2: startPosition)
}
add a comment |
up vote
1
down vote
up vote
1
down vote
If you are interested in the distance from the starting location to the current location, you can remember the start location and then calculate the distance:
let startPosition: CGPoint
var distance: CGFloat
init(startLocation: CGPoint) {
self.startPosition = startPosition
distance = 0
}
// Calculate the distance between two points using Pythagoras. You can make your code clean, by moving this into an extension for CGPoint.
private func distance(point1: CGPoint, point1: CGPoint) -> CGFloat {
let dx = point1.x - point2.x
let dy = point1.y - point2.y
return sqrt(dx * dx + dy * dy);
}
override func update(_ currentTime: TimeInterval) {
// Move the sprite
let newPlayerPosition = player.position
distance = distance(point1: newPlayerPosition, point2: startPosition)
}
If you are interested in the distance from the starting location to the current location, you can remember the start location and then calculate the distance:
let startPosition: CGPoint
var distance: CGFloat
init(startLocation: CGPoint) {
self.startPosition = startPosition
distance = 0
}
// Calculate the distance between two points using Pythagoras. You can make your code clean, by moving this into an extension for CGPoint.
private func distance(point1: CGPoint, point1: CGPoint) -> CGFloat {
let dx = point1.x - point2.x
let dy = point1.y - point2.y
return sqrt(dx * dx + dy * dy);
}
override func update(_ currentTime: TimeInterval) {
// Move the sprite
let newPlayerPosition = player.position
distance = distance(point1: newPlayerPosition, point2: startPosition)
}
answered Nov 20 at 15:56
gebirgsbärbel
1,33211631
1,33211631
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53394005%2fswift-and-sprite-kit-how-can-i-measure-the-total-distance-a-sprite-has-travell%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
keep track of your starting location and just use the distance formula
– Knight0fDragon
Nov 20 at 13:55