I am using SpriteKit to shoot a projectile. The projectile node is given an impulse using -(void)applyImpulse:(CGVector)impulse
.
I want to calculate the distance the projectile will fly before hitting the ground, which can be done easily knowing the velocity vector of the projectile node's physicsbody and the gravitational acceleration (see Wikipedia: Range of a Projectile).
It is however not clear what the units are of this distance and how they translate to distances in the SKScene
. The documentation of SKPhysicsBody
's velocity property do not mention units. I am currently running some tests to figure out the units and mapping to the SKScene.
Has anyone figured this out already?
The units are likely CGPoints/second
I did some experimentation by printing the change in position/change in time and comparing that to the velocity property of the physics body.. here is my code:
func moveInDirection(direction:CGVector, timeInterval:NSTimeInterval){
physicsBody?.linearDamping = damping
let changeInX = position.x-previous_whale_position.x
let changeInY = position.y-previous_whale_position.y
let x_Velocity = changeInX/CGFloat(timeInterval)
let y_Velocity = changeInY/CGFloat(timeInterval)
println("the m/svelocity \(physicsBody!.velocity.dx), \(physicsBody!.velocity.dy)")
println("the cgpointvelocity \(x_Velocity), \(y_Velocity)")
println()
physicsBody!.applyImpulse(direction*accelerationMultiplier)
physicsBody!.velocity = physicsBody!.velocity.limitToHypot(maxVelocity)
}
here is the some of the output in the log
the m/svelocity -419.904, -114.774
the cgpointvelocity -411.577, -112.497
the m/svelocity -410.107, -134.854
the cgpointvelocity -522.235, -171.725
the m/svelocity -406.494, -155.742
the cgpointvelocity -413.777, -158.531
the m/svelocity -395.372, -182.136
the cgpointvelocity -396.967, -182.874
the m/svelocity -389.263, -194.851
the cgpointvelocity -397.426, -198.937
the m/svelocity -384.932, -203.273
the cgpointvelocity -388.112, -204.951
the m/svelocity -383.476, -206.006
the cgpointvelocity -390.179, -209.609
the m/svelocity -382.996, -206.897
the cgpointvelocity -389.749, -210.543
the m/svelocity -382.839, -207.188
the cgpointvelocity -385.678, -208.726
the m/svelocity -382.787, -207.283
the cgpointvelocity -386.198, -209.131
the m/svelocity -382.77, -207.314
the cgpointvelocity -386.386, -209.272
the m/svelocity -382.765, -207.325
the cgpointvelocity -387.465, -209.871
the m/svelocity -382.763, -207.328
the cgpointvelocity -387.539, -209.915
the m/svelocity -382.762, -207.329
the cgpointvelocity -388.23, -210.291
the m/svelocity -385.052, -203.045
the cgpointvelocity -396.597, -209.134
the m/svelocity -404.03, -171.534
the cgpointvelocity -300.013, -127.373
the m/svelocity -411.441, -130.726
the cgpointvelocity -522.956, -166.157
the m/svelocity -422.1, -106.413
the cgpointvelocity -427.514, -107.779
the m/svelocity -425.415, -92.2759
the cgpointvelocity -430.583, -93.3979
the m/svelocity -431.763, -55.4343
the cgpointvelocity -451.494, -57.9693
the m/svelocity -438.175, -25.8145
the cgpointvelocity -327.677, -19.3046
the m/svelocity -435.305, 1.48222
the cgpointvelocity -431.963, 1.46786
the m/svelocity -431.347, 17.6925
the cgpointvelocity -555.525, 22.7858
the m/svelocity -434.409, 27.9586
the cgpointvelocity -435.048, 27.9997
the m/svelocity -432.63, 48.2073
the cgpointvelocity -437.134, 48.7081
the m/svelocity -431.843, 54.8057
the cgpointvelocity -440.961, 55.9637
the m/svelocity -430.199, 66.49
the cgpointvelocity -440.097, 68.0202
the m/svelocity -432.777, 73.2641
the cgpointvelocity -321.332, 54.3979
the m/svelocity -424.901, 76.3717
the cgpointvelocity -540.091, 97.0769
the m/svelocity -427.745, 80.7875
the cgpointvelocity -433.12, 81.8004
the m/svelocity -424.632, 95.811
the cgpointvelocity -431.081, 97.2632
the m/svelocity -423.5, 100.698
the cgpointvelocity -429.958, 102.232
the m/svelocity -423.118, 102.293
the cgpointvelocity -434.132, 104.954
the m/svelocity -426.516, 103.671
the cgpointvelocity -316.766, 76.9931
the m/svelocity -419.455, 102.133
the cgpointvelocity -533.238, 129.839
the m/svelocity -422.936, 103.04
the cgpointvelocity -429.117, 104.546
the m/svelocity -409.127, 99.6756
the cgpointvelocity -415.2, 101.156
the m/svelocity -395.769, 96.4212
the cgpointvelocity -399.771, 97.3951
the m/svelocity -382.847, 93.273
the cgpointvelocity -387.945, 94.5152
the m/svelocity -370.347, 90.2276
the cgpointvelocity -374.075, 91.1383
the m/svelocity -358.255, 87.2816
the cgpointvelocity -363.762, 88.6238
the m/svelocity -346.558, 84.4319
the cgpointvelocity -350.016, 85.275
the m/svelocity -335.243, 81.6751
the cgpointvelocity -350.701, 85.4411
the m/svelocity -326.999, 79.6668
the cgpointvelocity -242.241, 59.0151
the m/svelocity -313.709, 76.4288
the cgpointvelocity -404.319, 98.5007
the m/svelocity -305.995, 74.5495
the cgpointvelocity -225.667, 54.9776
the m/svelocity -293.558, 71.5194
the cgpointvelocity -380.591, 92.7216
the m/svelocity -286.339, 69.7608
the cgpointvelocity -217.244, 52.9272
the m/svelocity -276.99, 67.4831
the cgpointvelocity -273.834, 66.7158
the m/svelocity -265.732, 64.7403
the cgpointvelocity -338.328, 82.4244
the m/svelocity -257.056, 62.6265
the cgpointvelocity -265.84, 64.7653
the m/svelocity -250.735, 61.0865
the cgpointvelocity -188.673, 45.9667
the m/svelocity -242.548, 59.092
the cgpointvelocity -242.195, 59.0063
the m/svelocity -232.69, 56.6902
the cgpointvelocity -302.26, 73.6413
the m/svelocity -226.968, 55.2963
the cgpointvelocity -166.956, 40.6744
the m/svelocity -217.743, 53.0488
the cgpointvelocity -287.069, 69.9373
the m/svelocity -212.389, 51.7444
the cgpointvelocity -158.363, 38.5817
the m/svelocity -205.455, 50.0549
the cgpointvelocity -204.966, 49.9354
the m/svelocity -197.104, 48.0204
the cgpointvelocity -254.568, 62.0196
the m/svelocity -192.257, 46.8396
the cgpointvelocity -143.343, 34.9233
the m/svelocity -184.443, 44.9358
the cgpointvelocity -234.465, 57.1213
the m/svelocity -178.421, 43.4686
the cgpointvelocity -179.961, 43.8436
the m/svelocity -172.595, 42.0494
the cgpointvelocity -177.962, 43.3537
the m/svelocity -168.351, 41.0154
the cgpointvelocity -125.254, 30.5169
the m/svelocity -161.509, 39.3484
the cgpointvelocity -204.98, 49.9368
the m/svelocity -156.235, 38.0636
the cgpointvelocity -159.304, 38.8082
the m/svelocity -151.134, 36.8208
the cgpointvelocity -156.913, 38.2251
the m/svelocity -147.418, 35.9154
the cgpointvelocity -109.618, 26.7046
the m/svelocity -142.605, 34.7428
the cgpointvelocity -143.35, 34.9249
the m/svelocity -136.809, 33.3307
the cgpointvelocity -176.614, 43.0291
the m/svelocity -133.445, 32.5111
the cgpointvelocity -99.8049, 24.3138
the m/svelocity -128.021, 31.1897
the cgpointvelocity -165.016, 40.2001
the m/svelocity -124.873, 30.4228
the cgpointvelocity -93.041, 22.6676
so i conclude that the units of distance are nearly cgpoints/second.. the current velocity seems to not represent the actual velocity very well. This might be attributed to the fact that the measurements are taken over different time intervals with the m/s velocity being measured during the physics simulation and the the cgpoint/second velocity being measure during the update function. However the m/s velocity seems lower on average which I cannot explain. perhaps rounding occurs that is imprecise
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With