HTML

gondolataim elsősorban játékfejlesztésről

Elsősorban játékfejlesztés magyarul: az enginem fejlesztése során felmerülő problémák, ötletek, tévutak stb dokumentálása, amely számomra és talán mások számára is hasznos lehet később Másodsorban gondolatok szavakban...

Kapcsolat:
aalberik 'at' gmail 'dot' com

Haletető

Galéria

Címkék

Összes

Linkblog

Naptár

április 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Triggerek, scriptek és némi PhysX

2011.08.09. 08:47 :: syam

Némileg viszontagságos a címben szereplő témakör implementálása mivel számos helyen egybefonódnak a problémák.

1. probléma

A triggerelésnél azt szeretnénk, hogy a triggerrel kapcsolatba szereplőt / szereplőket regisztráljuk. A probléma onnan ered, hogy a PhysX shape-re lebontva hívja meg a triggerelés eseményt vagyis ha egy szereplő több shape-ből áll akkor a triggerelés annyiszor fog meghívódni ahány shape-t tartalmaz az actor. Mi pedig azt szeretnénk, hogy egy frame-ben csak egyszer történjen egy trigger - szereplő kölcsönhatás.
Mondhatnánk azt, hogy ha egy triggert már aktiváltunk az adott frame-ben akkor többet nem lehet. Ezt kizárja azonban a 2. probléma.

2.probléma

Ez már nem kapcsolódik a PhysX-hez ez már a játék engine-ből következik. Ez pedig nem más, hogy egy frame-ben több szereplő is hathat a triggerre.
Emiatt regisztrálnunk kell minden egyedi szereplő - trigger kapcsolatot. Azonban ha ennél még árnyaltabb triggerelést szeretnénk - nevezetesen regisztrálni a szereplő ki-, belépését és ott tartozkódását akkor találkozunk a 3. problémával ( a belépést és ott tartózkodást már most is tudnánk kezelni azonban a kilépést nem hiszen ekkor már nincs szereplő - trigger kapcsolat).

3. probléma

Bár a PhysX képes ezt a 3 állapotot közölni velünk az 1. probléma miatt nem célszerű használni (másrészről ez a tulajdonság így nem lesz fizikai engine függő!).
Ahhoz, hogy a trigger - szereplő kapcsolat ezt a 3 állapotát tudjuk kezelni szükségünk van arra, hogy ezen kapcsolatok

  • létrejöttét / létrejöttének idejét tároljuk - ez lesz a belépés esemény
  • ha a kapcsolat nem az adott frame-ben jött létre akkor figyelni, hogy az adott frame-ben is született volna-e egy ilyen
  • ha igen, akkor csak frissítjük ezt a kapcsolatot - ez az ott tartózkodás esemény
  • ha nem, akkor a szereplő kilépett a triggerből vagyis ez az kilépés esemény és ilyenkor törölni lehet a kapcsolatot.

Van azonban egy 4. probléma is...

4. probléma

Előfordulhat olyan eset, amikor még létezik egy olyan trigger - szereplő kapcsolat, amelyben a szereplő már a jelenetből törölve lett. Ezt bonyolultabb módon referenciákkal vagy egyszerűbben késleltett törléssel küszöbölhető ki (hiszen max. egy frame-mel ezelőtti keletkezett kapcsolat esetén fordulhat elő ez).

Ezt a 4 problémát megoldva kapunk egy a játékokban látott triggerelési rendszert - lehetséges, hogy van több probléma is, de azokkal egyelőre nem szembesültem :]

 

Szólj hozzá!

Címkék: script trigger physx

A bejegyzés trackback címe:

https://sakura7.blog.hu/api/trackback/id/tr183136648

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása