Hmm, chę napisać "rozpiędzanie" obiektu zamiast maksymalnej prędkości po wciśnięciu przycisku najprościej jak się da, nie wiem tylko czy to może zadziałać jeśli zrobiłbym to w ten sposób...
if(input.odpowiedniklawisz){ for (float i = 0.01; i <= 5; i++) transform.Translate(Vector2.right * i *Time.deltaTime); }
Pomysł taki żeby po wciśnięciu klawisza wykonywała się pętla dodawania do zmiennej samej siebie dopóki nie będzie maksymalną, a potem z tą maksymalną prędkością żeby dalej obiekt się poruszał, tylko chyba jednak mi to nie podziała za bardzo :/ .
nie lepiej uzywac realnych wartosci fizycznych typu przyspieszenie, predkosc etc? wciskajac klawisz nadajesz przyspieszenie, predkosc liczy sie sama, polozenie tez - w zaleznosci od czasu.
@LoganWhyz: o faktycznie, jeszcze addforce jest - ale nadal ta "siła" ma rosnąć po wciśnięciu klawisza do maksymalnej pozycji, a nie że wciskasz o od razu siła 4f przesuwa ci obiekt, hmm.
@MichaelP: To w czym problem? Siła będzie stała i będzie ciągle dodawana w FixedUpdate(); A prędkość maksymalną możesz zdefiniować przy użyciu Linear Draga
@LoganWhyz: Ja nie chce być programistą, ja po prostu nie chce prosić się programistów przy byle pierdołach. ale masz rację, trzeba wejść w dokumentację :> .
@NikczemnyPan: O, ciekawe - jak sterowanie obiektem przerzuciłem na rigidbody to jest ładnie widoczne to rozpędzanie o którym było mowa bez potrzeby kodzenia. Tylko nadal musiałem w kod wstawić stałą np. 4f , a chciałbym jeszcze móc widzieć tą zmienną od "rozpędzania" żebym mógł uaktywniać inne pierdoły po osiągnięciu prędkości określonej.
@MichaelP: nie bardzo łapie, wydaję się że dość unity specyficzne pytanie ( wciąż nie robiłem nic w unity). Ale skoro przeszedłeś na komponent rigbody. To dodaj nowy skrypt który w każdym updejcie gry pobierze to rigbody i sprawdzi obecna prędkość rigbody. I jezeli rigbody osiagnie okreslone predkości to wtedy niech się coś uaktywnia.
@MichaelP: od tego masz Rigidbody.velocity Jeżeli obiekt porusza się po 1 osi, wystarczy ci tylko rigidbody.velocity.x/y/z, jeżeli po przekątnej, pobierz długość wektora velocity i to będzie twoja prędkość wypadowa.
@NikczemnyPan: skoro rigidbody ma addforce to przydałoby się takie coś jak getforce albo checkforce, wbijam w dokumentację, ale wątpię czy coś znajdę, trzeba kombinować :/ .
if(input.odpowiedniklawisz){
for (float i = 0.01; i <= 5; i++)
transform.Translate(Vector2.right * i *Time.deltaTime);
}
Pomysł taki żeby po wciśnięciu klawisza wykonywała się pętla dodawania do zmiennej samej siebie dopóki nie będzie maksymalną, a potem z tą maksymalną prędkością żeby dalej obiekt się poruszał, tylko chyba jednak mi to nie podziała za bardzo :/ .
#gamedev #unity3d
Do ciągłej zmiany pozycji nie używaj transform
jezeli klawisz wcisnietyjezeli obecnaPredkosc < MAKSYMALNA_PREDKOSC
obecnaPredkosc += STALY_KROK_DODAWANIA_PREDKOSCI
jezeli obecnaPredkosc
if (Input.GetKey (KeyCode.D)) {
if(currentspeed < maxspeed){
currentspeed+=momentum}
if(currentspeed
działa ?
Najpierw przerzuce sterowanie na rigidbody, a potem dodam to. Ale luz, poza tym że ja to lama jestem :< .
Ale to nic, po plusie dla wszystkich :> .
Jeżeli obiekt porusza się po 1 osi, wystarczy ci tylko rigidbody.velocity.x/y/z, jeżeli po przekątnej, pobierz długość wektora velocity i to będzie twoja prędkość wypadowa.