• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Phaser sprawdzenie kolizji z granicami świata

Object Storage Arubacloud
0 głosów
168 wizyt
pytanie zadane 13 marca 2018 w JavaScript przez Storm Obywatel (1,570 p.)
zamknięte 13 marca 2018 przez Storm

Witam ponownie, tak więc w jaki sposób można sprawdzić kolizję elementu z dowolną granicą świata? Powiedzmy, że po kolizji piłki z lewą/prawą/górną/dolną granicą świata chcę aby została wywołana metoda.

game.physics.arcade.collide(this.balls, ???, this.metoda, null, this);

Co w miejscu pytajników można wpisać? Próbowałem

Phaser.Physics.ARCADE.checkCollision

i to raczej nie to.

komentarz zamknięcia: Rozwiązane.

1 odpowiedź

+1 głos
odpowiedź 13 marca 2018 przez thryndl Nałogowiec (30,470 p.)

Da się to zrobić za pomocą onOutOfBounds

Sprawdziłem dla grupy obiektów i działa.

        this.boxes = game.add.group();
        this.box1 = this.boxes.create(30, 30, "box_big");
        this.box2 = this.boxes.create(30, 30, "box_big");

        game.physics.arcade.enable(this.boxes); // włącza fizykę dla grupy obiektów
        this.box1.body.gravity.x = 300; // ustawia grawitacje
        this.box1.checkWorldBounds = true; // właściwość musi być ustawiona na true dla danego obiektu
        
        // a tu przykład z wykorzystaniem drugiego obiektu z grupy
        this.box2.body.gravity.y = 300;
        this.box2.checkWorldBounds = true;

w metodzie update sprawdza czy obiekty opuściły granice świata i wywołuje callback

this.box1.events.onOutOfBounds.add(this.objectOutOfBounds, this);
this.box2.events.onOutOfBounds.add(this.objectOutOfBounds, this);

i metoda

objectOutOfBounds: function () {
        console.log("out of bounds");
    },

 

komentarz 13 marca 2018 przez Storm Obywatel (1,570 p.)
Cześć, podałeś ciekawy przykład lecz nie do końca chodziło mi o wywołanie metody w chwili, gdy obiekt znajduje się poza granicami świata :P Chcę aby metoda wywołała się w momencie gdy obiekt dotknie granicy (i jest w obszarze świata).

Inaczej mówiąc chciałby aby zwyczajnie odbił się od "krawędzi świata", ponieważ obecnie tego nie robi.

Piłeczka nie odbija się ponieważ cały czas ma ustawioną prędkość i muszę w pewien sposób zmienić ją na przeciwny kierunek :D Masz jeszcze jakieś ciekawe pomysły?
komentarz 13 marca 2018 przez thryndl Nałogowiec (30,470 p.)

Inaczej mówiąc chciałby aby zwyczajnie odbił się od "krawędzi świata", ponieważ obecnie tego nie robi.

To trzeba było od razu pisać, że chcesz, aby obiekt się odbijał od krawędzi świata, a nie wywoływał metodę indecision

Wystarczy dać właściwość collideWorldBounds na true i ustawić siłe odbicia.

Tak jak w powższym przykładzie, zmieniasz checkWorldBounds na w/w właściwość i dodajesz bounce

this.boxes = game.add.group();
this.boxes.enableBody = true;
this.box1 = this.boxes.create(30, 30, "box_big");
this.box1.body.gravity.x = 300;

this.box1.body.collideWorldBounds = true; // kolizja z granicami świata
this.box1.body.bounce.setTo(0.5, 0.5); // siła odbicia, bez tej właściwości obiekt się przyklei

I na koniec link do Phaser - Examples: Collide World Bounds

Podobne pytania

0 głosów
2 odpowiedzi 165 wizyt
0 głosów
0 odpowiedzi 126 wizyt
pytanie zadane 5 stycznia 2023 w JavaScript przez xTMx3 Obywatel (1,560 p.)
0 głosów
1 odpowiedź 106 wizyt
pytanie zadane 30 grudnia 2022 w JavaScript przez xTMx3 Obywatel (1,560 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...