Прилагам постоянна скорост към един от моите възли като този във функцията за актуализиране:
// Set a constant velocity to the right:
node.physicsBody?.velocity.dx = 300
Когато отпечатам скоростта във функцията didSimulatePhysics, тя отпечатва около 290. Добре, губя малко скорост от linearDamping, има смисъл. Но не остава постоянно.
На всеки 10-15 секунди ще има необяснимо трептене на скоростта (от разпечатката на didSimulatePhysics). За 6 или 7 кадъра скоростта ще варира от 285-295. По-бавно, после по-бързо. Така че ще получа 287, след това 294, след това 286, след това 294. Никога две бавни или две бързи подред.
Това е главният ми герой, проследен от моята камера и малката промяна в скоростта кара камерата да изглежда трептене, когато това се случи.
Далеч съм от всякакви сблъсъци, но имайте предвид, че пренебрегвам сблъсъци на този възел и имам реституция, зададена на 0:
node.physicsBody?.collisionBitMask = 0
node.physicsBody?.restitution = 0
Симулацията на физиката изостава ли и след това се опитва ли да компенсира това на следващия кадър (FPS е фиксиран на 60)? Или евентуално се натъквате на проблеми със закръгляването?
Има ли начин да се получи точно постоянна скорост в една посока на всеки кадър?
Добавяне на пример за действителната промяна в node.position.x на кадър при движение направо във въздуха без сблъсък, задаване на velocity.dx от 300 при всяка актуализация:
3.82861328125 // this is the norm - thousands of these before this blip)
3.82861328125
3.82861328125
5.740478515625 // blip begins
1.9150390625
3.82861328125
5.740478515625
1.9150390625
5.740478515625
1.9150390625
5.740478515625
1.9150390625
5.740478515625
3.82861328125 // blip ends
3.82861328125
3.82861328125