-
Notifications
You must be signed in to change notification settings - Fork 0
Gracz nie może przesuwać rigidbody #141
Description
Powód
Character controller nie ma rigidbody.
Proponowane rozwiązanie
Na internecie mówią, aby takie rzeczy implementować ręcznie w skrypcie do movementu. Aktualnie maksymalna prędkość gracza to 4 idąc i 6 biegnąc, więc bieg jest 1,5x szybszy. W kodzie można dodać maksymalną wagę przedmiotu, który da się przesuwać - np 4. Prędkość chodzenia będzie się zmniejszać liniowo od 4 przy braku obciążenia, do 0 przy wadze 4 (w tym przypadku +1 wagi to -1 szybkości). Bieg jest 1,5x szybszy, więc maksymalna waga którą można przesunąć to 1,5x zwykła waga czyli 6. Dzięki temu podczas sprintu obciążenie tak samo bardzo spowalnia gracza (+1 wagi to -1 do szybkości), ale maksymalnie można przesunąć więcej.
Przesuwanemu obiektowi nadajemy prędkość, przez co następne rigidbody które są przesuwane pośrednio nie wpływają na gracza. Nie jest to problem, bo same w sobie mając konkretną masę i prędkość mają stałą siłę, przez co przy przesuwaniu większej ilości rzeczy wszystko spowalnia.
Dodatkowo można zrobić ostrzejsze obcięcie prędkości przy ciężkich przedmiotach. Podanie maksymalnej wagi jaką możemy przesunąć jako 4 znaczy, że obiekt ważący prawie 4 ledwo się przesuwa, czyli w praktyce nie da się tak ciężkich rzeczy przesuwać. Zamiast tego minimalną prędkością przesuwania mogłoby być np. 1, a przy czymś odrobinę cięższym przesuwanie byłoby już niemożliwe (prędkość 0).
Interakcje do sprawdzenia:
- Interakcja z rollem - wg. mnie powinien mieć siłę przesuwania jak przy chodzeniu lub bieganiu, na pewno nie jak przy rollu prędkość 40
- Wpływ ustawiania np. beczkom bezpośrednio prędkości w momencie, gdy coś innego chciałoby tę beczkę przesunąć lub jakaś inna siła zadziałać. Czy jedna z tych rzeczy nie ignoruje drugiej?