Unity: c# script folyamatos sebzés?
Azt szeretném elérni hogy ha a játékos egy colliderbe van akkor folyamatosan sebzést szenvedjen el.Jelenleg ez a kódrészlet oldaná ezt meg nekem:
pastebin: 1jYxSYP9
Elvileg a startcoroutine még lefut de a dDamage metódus már valamiért nem.
Hogyan lehetne ez megoldani?
(Egyékbént ha nem coroutine-t használok akkor müködik azonban akkor nem tudok késleltetni és framenként von le 10 hp-t)
Elvileg lefut, vagy lefut?
A coroutine első sorába rakj be egy Debug.Log("") ot első körben.
A tag biztosan Player?
Egyébként félreérted a coroutine működését, felesleges a yield után megint meghívni a sebzést, elég előtte, és akkor vonj le 10 et(mindenképp levonja mindkét esetben, akkor is, ha már kijött a triggerből, a WaitForSeconds() csak a ciklust állítja meg 2 másodpercre, de nem ellenőrzi újra a feltételt). Plusz ide, ebben a formában amúgy sem jó, mert amíg az OnTriggerStay() teljesül, addig folyamatosan meghívja a coroutine t, tehát pontosan ugyanott vagy, mintha coroutine nélkül írnád. Egy változóban tárold el, hogy épp fut-e a coroutine(első sorban myBool = true; utolsóban meg myBool = false; OnTriggerStay ben csak akkor indítsd a coroutine t, ha myBool == false).
Aztán.. OnTriggerStay ben több értelme lenne ellenőrizni a tag et, főleg akkor, ha a string alapú coroutine hívást akarod használni(a taget mindenképp ellenőrzöd, felesleges coroutine hívásra pazarolni az erőforrásokat, mielőtt egyáltalán tudnád, hogy le kell-e futtatni - nyilván egynél még nem számít, de elég könnyen össze tudnak adódni az ilyen gondok).
A kódban nem látok hibát, esetleg ami előfordulhat, hogy kimaradt a using System.Collections, de ha nem tévedek automatikusan generálja, feltételezem nem törölted ki. Vagy simán nem működik a string alapú StartCoroutine, de ezt még inkább kétlem.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!