Chociaż rozwiązanie systemu cząsteczek dostarczone przez LVBen działa, nie jest to najlepsze rozwiązanie, gdy używasz zestawu narzędzi 2D dla twoich duszków. Głównym powodem jest to, że nie można zsynchronizować materiału śladu duchów w układzie cząstek z bieżącą animacją duszka głównego prefabrykatu.
Oto przyjazne rozwiązanie 2D Toolkit, z którego korzystałem.
Do prefabrykatu, z którego ma pochodzić ślad duchów, dołącz do niego pusty obiekt gry, który będzie działał jako rdzeń. Pod tym korzeniem dołącz dowolną liczbę tk2dSprite lub tk2dSpriteAnimator (w zależności od tego, czy chcesz animowane duszki), lub nie, obiekty gry (dodałem 4) i odpowiednio dostosuj ich wartości alfa kolorów, aby uzyskać efekt zjawy / zanikania.
W górnej aktualizacji rodzica
// AmountToMove is a Vector3 of the amount we will translate this gameobject.
float y = (int)AmountToMove.y == 0 ? 0 : -AmountToMove.y;
float distanceFactor = 0.05f;
for (int i = 0; i < GhostingRoot.childCount; ++i) {
// Based on the player's current speed and movement along the x and y axes,
// position the ghost sprites to trail behind.
Vector3 ghostSpriteLocalPos = Vector3.Lerp(
GhostingRoot.GetChild(i).localPosition,
new Vector3((-CurrentSpeed * distanceFactor * i),
(y * distanceFactor * i), 0),
10f * Time.deltaTime);
// GhostingRoot is the root gameobject that's parent to the ghost sprites.
GhostingRoot.GetChild(i).localPosition = ghostSpriteLocalPos;
// Sync the animations.
// _ghostSprites is a List of the tk2dSpriteAnimator ghost sprites.
_ghostSprites[i].Play(SpriteAnimator.CurrentClip.name);
_ghostSprites[i].Sprite.FlipX = Sprite.FlipX;
}
To rozwiązanie stworzy efekt ducha końcowego, synchronizując animacje duszków z duchem głównym.