• 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

0 głosów
66 wizyt
pytanie zadane 13 marca w JavaScript, jQuery, AJAX przez Storm Obywatel (1,520 p.)
zamknięte 13 marca 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 przez thryndl Stary wyjadacz (11,600 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 przez Storm Obywatel (1,520 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 przez thryndl Stary wyjadacz (11,600 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 64 wizyt
0 głosów
2 odpowiedzi 69 wizyt
pytanie zadane 12 marca w JavaScript, jQuery, AJAX przez Storm Obywatel (1,520 p.)
+2 głosów
1 odpowiedź 172 wizyt
pytanie zadane 30 lipca 2017 w JavaScript, jQuery, AJAX przez Radekol Bywalec (2,890 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

52,033 zapytań

94,890 odpowiedzi

193,431 komentarzy

25,358 pasjonatów

Przeglądających: 146
Pasjonatów: 2 Gości: 144

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...