Skocz do zawartości

Rekomendowane odpowiedzi

potrzebuje zrobić dym trujący particlesami ale niemam pojęcia jak za to się zabrać

będę wdzięczny za pomoc :helpsmilie:

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Particle nie mają opcji sprawdzania kolizji, więc nie zrobisz tego tak jak byś chciał. Dla tego będziesz musiał to zrobić na około.

Zacznij od stworzenia sobie tego efektu particli. Potem sprawdź na jaki obszar ten gaz ma oddziaływać, na przykład sprawdzając dystans do obiektów.

 

Rozumiem że masz jakiś obiekt typu granat który rozprzestrzenia ten gaz. W nim wykonujesz iterację by sprawdzić wszystkie obiekty w zasięgu działania gazu.

GML
for (i=0; i<instance_number(obj); i+=1)

{

if(point_distance(x,y,i.x,i.y)<128)//128 to zasięg dymu

{i.HP-=1}

}

obj to instancja na którą ma oddziaływać gaz. Powinieneś użyć tu parenta dla wszystkich przeciwników/graczy. Gdybyś był na prelekcji Gnyska wiedział byś że przy pomocy parentów można doskonale grupować obiekty. BTW Gnysek powinien tę swoją prezentację udostępnić :P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@Roki: Na co mu to, jak nawet nie będzie wiedział kiedy doszło do kolizji, by zmienić element gameplaya? Particle nie mają NIC do gameplaya i NIE mogą mieć. A przynajmniej takie jest założenie.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

1. Pierdzielisz particle i robisz to na obiektach - wtedy sobie dasz radę i będzie bardzo dokładnie

2. Dajesz obiektowi emitera jakąś okrągłą maskę i wtedy każdemu obiektowi możesz dać event "Collision with o_dym_emitter"

3. W każdym obiekcie sprawdzasz dystans do obiektu emitera (albo obiektów) i jeśli jest mniejszy niż x to ktoś jest zakażony

 

Spróbuj sobie wersji 2., jeśli uznasz że jest za mało precyzyjna odwzoruj sobie particle na obiektach i będziesz miał normalne kolizje.

 

Threef, co to za magiczne odwołanie "i.x, i.y"? : D

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Pewnie chodziło o (instance_find(obiekt,i)).x|y.

 

@temat: jeśli źródło gazu jest statyczne, to nie trzeba w ogóle robić kolizji obiektów, wystarczy collision_circle.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Racja, zapomniałem o tym :)

 

Teraz napiszę to o co napisał Muuuuczek567 tak aby kriso99 zrozumiał.

W step (alarm?):

GML
if(instance_exist(granat))

if(collision_circle(x,y,128,granat,1,0))

{

//akcja

}

 

Dopiero wstałem i jestem pewien że to nie działa :D

Ale i tak uważam że moja koncepcja będzie lepiej działała, bo tylko obiekt granatu będzie sprawdzał warunki, i to tylko gdy będzie istniał. Wg @up każdy obiekt sprawdza czy jest w zasięgu gazu i robi to ciągle.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
proszę was o gotowy przykład

gaz trujący top down na particlach

 

Gotowe rozwiazanie chyba. A nauczyć się czegoś samemu to nie łaska?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@Threef:

każdy obiekt sprawdza czy jest w zasięgu gazu

Tak jest najszybciej i najprościej. Twoje rozwiązanie jest wolniejsze.

No i zamieniłbym ten kod na:

GML
a = instance_nearest(granat)

if(a)

if(collision_circle(x,y,128,a,1,0))

{

//akcja

}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

No tak, granatów może być wiele, i dalej uważam że mój sposób działał by lepiej bo wykonywał by się tylko gdy istnieje granat. Twój pomysł w każdym stepie sprawdza czy istnieje granat. Trzeba było by to sprawdzić tak jak Switch/If :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A, o to ci chodzi.

Step (Alarm?) granatu:

GML
with(obiekt) if(distance_to_object(other) < zasieg)

{

//akcja

}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
A nauczyć się czegoś samemu to nie łaska?

Łaska ale ja chce tylko efekt particle a nie obliczanie żeby działało, zabierało życie to ja umiem

zrobiłem kuślawo ale jest!!!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Temat fail! I to nasz fail!

 

Co do particle'i, gdzieś widziałem program który pozwalał na generowanie i losowanie systemów particle, i exportowanie ich do GM-a, poszukaj w necie, wiele takich jest.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

o.O

Ściągnij program Particle Generator, stwórz własny efekt, zapisz, wklej do gry. Włala.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

dym.png

zrobiłem takie coś na particlach jak zrobicie lepsze do prosze o podanie gml

 

kod jakby ktoś z początkujących szukał

Create

GML
[/b]Sname = part_system_create()

particle1 = part_type_create()

part_type_shape(particle1,pt_shape_smoke)

part_type_size(particle1,0.1,0.5,0.05,0)

part_type_scale(particle1,1,1)

part_type_color1(particle1,c_green)

part_type_alpha3(particle1,0.7,0.40,0.10)

part_type_speed(particle1,0.5,1,-0.01,0)

part_type_direction(particle1,0,359,0,0)

part_type_gravity(particle1,0,270)

part_type_orientation(particle1,0,0,0,0,1)

part_type_blend(particle1,-1)

part_type_life(particle1,40,80)

part_system_depth(Sname,-20)

emitter1 = part_emitter_create(Sname)

Step

GML
part_emitter_region(Sname,emitter1,x-20,x-20,y+20,y+20,0,0)

part_emitter_stream(Sname,emitter1,particle1,-4)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×