Załóżmy, że mam węzeł SKSpriteNode, który reprezentuje koło samochodowe, z okrągłym modułem SKPhysicsBody, które jest z nim pomyślnie połączone. Gatunek ten byłby oczywiście z bocznym przewijaniem gry/symulatorem jazdy samochodem 2d.Sposób zastosowania zRotation, aby odpowiednio wpłynął na SKPhysicsBody?
To, czego chcę, to wyliczyć całą fizyczną fizykę w silniku, nie odwołując się jeszcze do silnika fizyki SpriteKit. Chciałbym zachować pełną kontrolę nad tym, jak obliczane są mechanizmy silnika, sprzęgła, skrzyni biegów itd., Aż do prędkości obrotowej koła napędowego.
Od tego momentu chętnie przekazałbym kontrolę silnikowi fizyki SpriteKit, który następnie obliczałby, co się stanie, gdy obrotowe koło napędowe dotknie powierzchni drogi. Samochód porusza się, zwalnia, przyspiesza i/lub koła się ślizgają, niezależnie od przypadku.
Obliczanie mechaniki, aby uzyskać obroty koła nie stanowi problemu. Po prostu nie jestem pewien, jak przejść dalej.
jestem w stanie obrócić kierownicę po prostu stosując zRotation w aktualizacji: metody, na przykład:
self.rearWheelInstance.zRotation += (self.theCar.wheelRPS/6.283 * timeSinceLastUpdate); // revolutions/2pi = radians
ten sposób jestem w stanie zastosować dokładną RPM mam wyliczoną wcześniej. Oczywistym minusem jest to, że silnik fizyki SpriteKit jest zupełnie nieświadomy tego obrotu. Mimo wszystko wie, że koło teleportuje się z jednej fazy do następnej, więc nie powoduje tarcia o nawierzchnię drogi ani żadnej innej interakcji z innymi obiektami fizyki SpriteKit, jeśli o to chodzi.
Z drugiej strony, mogę zastosować moment obrotowy na koło:
[self.rearWheelInstance.physicsBody applyTorque: someTorque];
lub kątowy impulsowej:
[self.rearWheelInstance.physicsBody applyAngularImpulse: someAngularImpulse];
to kręci kołem w sposób, który SpriteKit fizyki silnik rozumie, co sprawienie, by poprawnie oddziaływał z otoczeniem.
Ale jeśli nie brakuje mi czegoś oczywistego, uznaje się to koło za "swobodny obiekt toczny" niezależnie od prędkości obrotowej wału korbowego, przekładni lub osi napędowej. W rzeczywistości koło nie ma jednak "wyboru" toczenia się z jakimkolwiek innym obrotem na minutę niż to, co jest przekazywane przez układ przeniesienia napędu do osi (chyba że skrzynia biegów jest ustawiona w położeniu neutralnym, pedał sprzęgła jest opuszczony lub sprzęgło się ślizga, ale to są całe inne historie).
Więc: 1) Czy jestem w stanie jakoś manipulować zRotation w taki sposób, że silnik fizyki SpriteKit "rozumie" jako ruch obrotowy?
lub
2) Czy muszę mieć wyraźny błąd w moim logiki, która wskazuje, że nie jest to co mam się starać w pierwszej kolejności? Jeśli tak, to czy możesz być tak uprzejmy, aby wskazać mi wadę (s), aby zamiast tego zastosować lepszą praktykę?
Dziękuję, miałem przeczucie, że tak będzie. Nadal zastanawiam się nad dokładną fazą, w której daję kontrolę silnikowi fizyki SK i jak to zrobić, nie tracąc dokładności, której szukam. –