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

question-closed Phaser elementy należącye do grupy

0 głosów
77 wizyt
pytanie zadane 12 marca 2018 w JavaScript, jQuery, AJAX przez Storm Obywatel (1,560 p.)
zamknięte 13 marca 2018 przez Storm
W jaki sposób można dostać się do określonego elementu z grupy i np. zmienić jego velocity.x?
komentarz zamknięcia: Problem rozwiązany. Dzięki :D

2 odpowiedzi

+2 głosów
odpowiedź 13 marca 2018 przez thryndl Pasjonat (24,130 p.)
wybrane 13 marca 2018 przez Storm
 
Najlepsza

Możesz przypisać dany obiekt z grupy do zmiennej i później na nim operować. W poniższym przykładzie robisz grupę dla np. skrzynek w grze.

this.boxes = game.add.group();

Później dodajesz kolejne obiekty

this.boxes.create(0,0, "box");

this.boxes.create(50,50, "box");

this.boxes.create(100,100, "box");

I jak chcesz się dostać do wybranej skrzynki, przypisujesz ją do zmiennej:

this.skrzynka = this.boxes.create(50,50, "box");

Można to zrobić jeszcze ładniej, poprzez tworzenie obiektów z grupy od razu w tablicy i odwoływać się po indeksie.

this.boxes = game.add.group();

this.boxesArray = [
    this.boxes.create(0,0, "box");

    this.boxes.create(50,50, "box");

    this.boxes.create(100,100, "box");
];

this.boxesArray[1]; // <-- wybrany obiekt

Dzięki trzymaniu obiektów w tablicy, możesz przykładowo za pomocą pętli, przeiterować je i nadać każdemu obiektowi z grupy właściwość body.immovable

for(let i = 0; i < this.boxesArray.length; i++) this.boxesArray[i].body.immovable = true;

 

komentarz 13 marca 2018 przez Storm Obywatel (1,560 p.)
Dziękuję za odpowiedź i mam jeszcze jedno pytanie gdyż widzę, że znasz się na Phaserze.

Chciałbym obsłużyć kolizję w taki sposób, że po zetknięciu piłki z skrzynką, piłka odbije się w przeciwną stronę.

Powiedzmy mam:

Piłka 1 odbija się pomiędzy dwoma skrzynkami po osi X.

Piłka 2 odbija się pomiędzy dwoma skrzynkami po osi Y.

Jak zrobić w taki sposób, aby odbicie piłki 1 nie wpływało na piłkę 2. Wiem, że każda moja piłka potrzebuje właściwości "kierunek" który po zetknięciu z obiektem zamieniam na -1 lub 1 i właśnie nie wiem jak mogę ją dodać i obsłużyć w metodzie kolizji. Pomożesz? :D
komentarz 13 marca 2018 przez thryndl Pasjonat (24,130 p.)

Jak zrobić w taki sposób, aby odbicie piłki 1 nie wpływało na piłkę 2. 

Mógłbyś zrobić dwie oddzielne kolizje dla jednej i drugiej piłki, a w metodzie collide przekazać jako callback funkcje, która odwróci ich kierunek, albo dla grupy piłek przekazać jako callback funkcję anonimową i tam sprawdzać, która piłka się odbija.

W drugim przypadku mogłoby to wyglądać tak

game.physics.arcade.collide(this.grupaPilek, this.grupaSkrzynek, function () { 
				this.zmienKierunek(ktoraPilka);
			}, null, this);

i tworzysz metodę zmienKierunek, w której sprawdzasz, która piłka się odbiła i negujesz jej velocity

To tak w uproszczeniu.

Jeśli korzystasz z Phasera w wersji 2.6.2 to jest fajnie udokumentowana funkcja Phaser.WeaponMasz tam metodę fireAngle i powinna być rozwiązaniem twojego problemu.

 

 

komentarz 13 marca 2018 przez Storm Obywatel (1,560 p.)
Dzięki wielkie! Poradziłem sobie z problemem dzięki twojej pomocy. Temat uważam za wyczerpany :)
0 głosów
odpowiedź 12 marca 2018 przez argeento Szeryf (88,650 p.)

find?

Podobne pytania

0 głosów
0 odpowiedzi 49 wizyt
pytanie zadane 3 stycznia w JavaScript, jQuery, AJAX przez MrxCI Mądrala (5,620 p.)
+33 głosów
17 odpowiedzi 1,817 wizyt
0 głosów
0 odpowiedzi 18 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

59,199 zapytań

104,616 odpowiedzi

216,478 komentarzy

31,590 pasjonatów

Przeglądających: 167
Pasjonatów: 0 Gości: 167

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.

...