W Unity 2d, chcę by grawitacja nie mogła wpływać na jeden, konkretny obiekt, który używa RigidBody 2D
oraz Box Collider 2D
.
Muszę nim sterować, przemieszać go i kolizje z innymi obiektami muszą działać (nie może przenikać przez obiekty z Colliderami
).
Temu Obiektowi w Rigidbody 2D
zmieniłem Gravity Scale
na zero, bo musi "latać" i nie może spadać, masę również mu zwiększyłem trochę, bo musi podnosić pewne rzeczy, które coś ważą.
Problem polega na tym, że gdy tym Obiektem, którym steruję, uderzę/dotknę innego obiektu, np. kuli, to zdarza się, że fizyka tej kuli oddziałuje na mój Obiekt i wpędza go w jakiś powolny ruch (nadaje Velocity
mojemu obiektowi), a na ten ruch swobodny nie mogę pozwolić.
Krótko mówiąc, mój Obiekt musi podnosić kulę i ta kula musi kolidować z tym obiektem, ale jednocześnie ta kula nie może uderzeniem swoim sprawić, że mój Obiekt dostanie jakiegoś pędu i zacznie sobie latać sam lub spadać.
Macie pomysł jak na Obiekcie wyłączyć Velocity
, które kula może nadać mojemu Obiektowi, gdy mu przywali lekko? Przypominam, że mój Obiekt jest sterowalny przez gracza więc porusza się, nie mogę Velocity
ot tak wyłączyć, bo wtedy nie będę mógł się tym ruszać.
Albo też podam inny przykład - podnoszę kulę i sobie lecę w górę celowo i zatrzymuję się, a kula jest 20x lżejsza od obiektu mojego i sprawia, że mój Obiekt zaczyna spadać. Nie chcę by obiekt spadał przez kulę. Chcę odebrać prawa kuli, jedyne prawa jakie jej zostawię to pozwolenie na kolizję z Obiektem moim.
Przydałby się Checkbox jakiś w tym Rigidbody 2D
, który sprawiłby, że obiekty mogą kolidować z moim obiektem, a obiekt mój mógłbym przemieszczać np. za pomocą AddForce
(używam AddForce
bo wtedy fizyka dobrze działa, gdybym używał czegoś łatwiejszego, to kula mogłaby się bugować, czyli mój obiekt dotykając jej mógłby sprawić, że kula przeniknęłaby (olałaby collidery) kawałek na mój obiekt, teleportowała się na niego)