• 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

Object Storage Arubacloud
0 głosów
177 wizyt
pytanie zadane 12 marca 2018 w JavaScript przez Storm Obywatel (1,570 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 Nałogowiec (30,470 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,570 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 Nałogowiec (30,470 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,570 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 niezalogowany

find?

Podobne pytania

0 głosów
0 odpowiedzi 99 wizyt
pytanie zadane 7 lutego 2019 w JavaScript przez ptaku19 Użytkownik (800 p.)
0 głosów
0 odpowiedzi 126 wizyt
pytanie zadane 3 stycznia 2019 w JavaScript przez MrxCI Dyskutant (8,260 p.)
+32 głosów
17 odpowiedzi 2,518 wizyt

92,537 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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!

...