• 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

Konferencja JOIN! 2018
0 głosów
74 wizyt
pytanie zadane 12 marca w JavaScript, jQuery, AJAX przez Storm Obywatel (1,560 p.)
zamknięte 13 marca 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 przez thryndl Pasjonat (20,110 p.)
wybrane 13 marca 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 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 przez thryndl Pasjonat (20,110 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 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 przez argeento Szeryf (87,750 p.)

find?

Podobne pytania

+33 głosów
17 odpowiedzi 1,756 wizyt
0 głosów
1 odpowiedź 72 wizyt
+2 głosów
1 odpowiedź 188 wizyt
pytanie zadane 30 lipca 2017 w JavaScript, jQuery, AJAX przez Radekol Bywalec (2,900 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

55,237 zapytań

99,529 odpowiedzi

204,779 komentarzy

27,217 pasjonatów

Przeglądających: 193
Pasjonatów: 3 Gości: 190

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.

...