Ich arbeite an einem Spiel, bei dem, wenn 2 Objekte aufeinandertreffen, 1 das andere absorbiert und ich einen Absorptionseffekt mit einem Partikelbehälter und einigen Sprites erzeuge. Wenn ich jedoch zu viele dieser Effekte gleichzeitig auf dem Bildschirm habe, entsteht eine unendliche psychedelische Explosion, die irgendwie großartig ist, aber nicht wirklich das, was ich wollte. Wenn ich jedoch von einem PartikelContainer zu einem normalen Container wechsle, verschwindet das Problem. Außerdem tritt das Problem nur auf, wenn eine Menge Partikelbehälter gleichzeitig auf dem Bildschirm angezeigt werden. Wenn es weniger sind, passiert es nicht.
Update: Es passiert tatsächlich immer noch mit dem regulären Pixi-Container, wenn das Spiel in einem mobilen Browser ausgeführt wird, also vielleicht ein Problem mit dem Speicherlimit?
Hier ist meine Ansichtshierarchie für jeden Effekt:
PIXI.Container // Effect main container. Gets scaled/positioned
PIXI.Sprite // This is an overall glow
PIXI.particles.ParticleContainer // This is the streaks effect
PIXI.Sprite[] // Individual streak of light. Gets rotated and alpha'ed
Hier ist ein Gif, wie es aussehen soll:
Und hier ist eines der Probleme:
pixi.js
Version: _z.B. 4.8.1Dies ist kein Fehler, das ist ein Feature!
Es stellt sich also heraus, dass ich in dieser Sache eigentlich nur dumm bin. Nachdem ich einigen falschen Hinweisen nachgegangen war, entdeckte ich, dass der Intensitätsparameter meiner Effekte falsch an die Framerate gebunden war, um sie schneller verblassen zu lassen, wenn das Spiel verzögert wurde. Meine Mathematik war jedoch falsch und es hat sie tatsächlich an Intensität erhöht, was das Spiel weiter verzögerte und einen Teufelskreis startete. Übrigens habe ich festgestellt, dass normale Container in meinem Anwendungsfall scheinbar etwas performanter sind als Partikelcontainer.
Dieser Thread wurde automatisch gesperrt, da nach dem Schließen in letzter Zeit keine Aktivität stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.
Hilfreichster Kommentar
Es stellt sich also heraus, dass ich in dieser Sache eigentlich nur dumm bin. Nachdem ich einigen falschen Hinweisen nachgegangen war, entdeckte ich, dass der Intensitätsparameter meiner Effekte falsch an die Framerate gebunden war, um sie schneller verblassen zu lassen, wenn das Spiel verzögert wurde. Meine Mathematik war jedoch falsch und es hat sie tatsächlich an Intensität erhöht, was das Spiel weiter verzögerte und einen Teufelskreis startete. Übrigens habe ich festgestellt, dass normale Container in meinem Anwendungsfall scheinbar etwas performanter sind als Partikelcontainer.