Mặc dù giải pháp hệ thống hạt do LVBen cung cấp không hoạt động, nhưng đó không phải là giải pháp phù hợp nhất khi sử dụng Bộ công cụ 2D cho các họa tiết của bạn. Lý do chính là không thể đồng bộ hóa vật liệu đường mòn ma trong hệ thống hạt với hoạt hình sprite hiện tại của prefab chính.
Đây là giải pháp thân thiện với Bộ công cụ 2D mà tôi đã sử dụng.
Đối với prefab mà bạn muốn xuất hiện dấu vết ma, hãy đính kèm một đối tượng trò chơi trống vào đó để đóng vai trò là gốc. Trong thư mục gốc này, đính kèm bất kỳ số lượng tk2dSprite hoặc tk2dSpriteAnimator (tùy thuộc vào việc bạn có muốn các họa tiết hoạt hình hay không) (tôi đã thêm 4) và điều chỉnh các giá trị alpha màu của chúng sao cho phù hợp để đạt được hiệu ứng bóng mờ / mờ dần.
Trong bản cập nhật cha mẹ hàng đầu
// 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;
}
Giải pháp này sẽ tạo ra hiệu ứng bóng ma kéo dài trong khi đồng bộ các hình ảnh động của các sprite ma với sprite chính.