Witam,
korzystając z silnika Phaser 3 tworzę właśnie swoją pierwszą w życiu grę. Na scenie gdzie będzie się odbywała się cała rozgrywka utworzyłem tło i inne elementy otoczenia, gracza oraz przeszkody na drodze. Jedna z przeszkód jest powiedzmy "kwadratowa" i chciałem zrobić tak, aby gracz po wskoczeniu na nią został spowolniony o połowę swojej prędkości, a kiedy spadnie lub zeskoczy z niej z powrotem na podłogę, jego prędkość wróci do stanu poprzedniego.
Fragment kodu, który miałby za realizację tego pomysłu odpowiadać napisałem w ten sposób:
if (this.physics.world.collide(this.player, this.obst)) { //this.player odnosi się do gracza, this.obst do przeszkody
this.player.body.velocity.x /= 2;
this.player.body.velocity.y /= 2;
}
Niestety z jakiegoś powodu kod ten nie działa i co więcej dzieje się dziwna, a przynajmniej według mnie dziwna, rzecz. Mianowicie, dla sprawdzenia co się dokładnie dzieje utworzyłem sobie zmienną var playerOnObst i ustawiłem ją na false. W powyższym warunku dopisałem linijkę:
playerOnObst = true;
Natomiast pod tym warunkiem wpisałem sobie:
console.log(playerOnObst);
Kiedy w oknie z grą uruchomiłem konsolę początkowo przez cały czas widziałem jedynie jedną linijkę z napisem "false". Natomiast kiedy przemieściłem postać gracza i ustawiłem ją na tej przeszkodzie konsola zaczęła mi wyświetlać trwający w nieskończoność spam złożony z "true" oraz "false". Tutaj zrzut ekranu, który to obrazuje:
i tak w nieskończoność dopóki postać gracza nie zejdzie z przeszkody.
Czy ktoś bardziej rozeznany w temacie niż ja mógłby mi wytłumaczyć dlaczego tak się dzieje? Tak powinno być i po prostu moja metoda na realizację tej myśli jest zła? Jak w takim razie mógłbym się za to zabrać?
Z góry dziękuję za wszelką pomoc.