NukeBoards

Pomoc - [Ogólne] Zdarzenie w przypadku braku kolizji z konkretnym ob

Wilkeł - 11-07-2018, 17:01
: Temat postu: [Ogólne] Zdarzenie w przypadku braku kolizji z konkretnym ob
Czy da się w cf zrobić zdarzenie będące odwrotnością zdarzenia typu: "jeżeli obiekt A koliduje z obiektem B, a obiekt B ma zmienną A równą 0, to dzieje się coś tam".
Chodzi mi konkretnie o zdarzenie "jeżeli obiekt A nie koliduje z tym obiektem B, który ma zmienną A równą 0, to dzieje się coś tam".

Czyli po prostu jeżeli obiekt A nie koliduje z konkretnym obiektem B (np. wyróżniającym się jakąś zmienną), to coś tam.

Od razu mówię, że to nie jest takie proste, jak po prostu zanegowanie kolizji (overlappingu).

Tutaj może obrazkowe ukazanie problemu:
Zdarzenie, którego odwrotność chcę otrzymać:


Zdarzenie, które nie działa tak, jak chciałbym, by działało:


Dodam, że nie działa zamiana warunków zajścia eventów miejscami oraz dodanie loopu "for each". Program wykrywa to po prostu jako "jeżeli obiekt A nie koliduje z żadnym z obiektów B i jakikolwiek obiekt B ma zmienną A równą 0, to coś tam".

Pomóżcie, proszę xd
wisnia_pc - 11-07-2018, 20:15
:
Przecież to banał :) przykład
mam nadzieje że o to chodziło :)
Wilkeł - 11-07-2018, 20:48
:
Wiem, że tego nie zawarłem bezpośrednio w poście, ale chodziło mi o to, żeby było zarówno zdarzenie o braku kolizji, jak i o jej występowaniu oraz o moment, w którym zarówno obiektów A, obiektów B spełniających warunek (zmienna=0) oraz obiektów B niespełniających warunku jest więcej, niż po jednym.

Czyli np. obiekt A może dotykać jednego obiektu B o zmiennej równej 0 i dwóch o zmiennej równej 1. Wtedy coś tam się z tym obiektem A dzieje (np. zmienia swoją zmienną A na 1). W następnej jednak sekundzie obiekt przestaje dotykać obiektu B o zmiennej równej 0 i wtedy skutek poprzedniego zdarzenia się usuwa (np. zmienna A powraca do 0).

W tej sytuacji twój przykład działa dokładnie tak samo, jak ten z mojego drugiego obrazka, tylko ma dodane 'Pick one of' i w sumie nie wiem, co ono zmienia.

Czyli nadal potrzebuję pomocy :p
jarlfenrir - 11-07-2018, 21:12
:
Kiedyś kombinowałem z czymś podobnym.
Może spróbuj tak:
zawsze ustaw flagę 1 na off (dla obiektu A)
A koliduje z B plus B ma wartość równą 666 -> ustaw flagę 1 na on

I kolejne zdarzenie:
Jeśli obiekt A ma flagę 1 na off, to coś tam.
wisnia_pc - 11-07-2018, 21:12
:
Zaraz Ci to zakoduje tylko rozgryzę co masz na myśli :)


Przykład 2

Teraz działa gdy obiekt A dotyka obiektu B lub wielu obiektów B to zmieniają kolor obiekty B dotknięte. Zastosowałem pętle i flagę. Kolejność zdarzeń jest ważna tu.
Wilkeł - 11-07-2018, 21:29
:
jarlfenrir, to było zarówno najprostsze jak i najbardziej idiotyczne rozwiązanie, o jakim myślałem, dlatego go nie wypróbowałem. Dzięki, sprawa rozwiązana XD

Cytat:
Przykład 2

Tak teraz patrzę na to, i zrobiłeś w sumie to samo, co zaproponował kolega wyżej, tylko nie dodałeś wzmianki o konkretnych obiektach B. Ale i tak dzięki za starania.