답변:
파티클 시스템과 셰이더를 사용하면 쉽게 할 수 있습니다. 최대 3 개의 입자로 X 밀리 초마다 1 개의 입자를 방출하도록 입자 시스템을 설정하십시오. (후행 스프라이트가 얼마나 멀리 떨어져 있는지에 따라 X를 선택하십시오.) 입자의 경우 캐릭터의 현재 스프라이트와 동일한 이미지를 사용하지만 재질은 다릅니다. 머티리얼에 알파 블렌드 셰이더를 사용해 후미 입자에 원하는 효과를 얻으십시오.
더 멋진 모습을 원한다면 캐릭터의 현재 속도에 따라 최대 입자 수 및 기타 설정을 조정할 수 있습니다.
다음은 1 쿼드, 1 스프라이트, 2 재료 및 파티클 시스템으로 수행 할 수있는 예입니다.
파티클 시스템을 쿼드에 연결하고 소닉 스프라이트를 사용하도록 쿼드를 설정했습니다. 파티클 시스템의 Emission, Color over Life time 및 Renderer 설정 만 사용하고 있습니다.
최대 입자 : 5
시뮬레이션 공간 : 세계
평생 시작 : 1
시작 속도 : 0
수명에 따른 색상 : 흰색 (Alpha 255)에서 검은 색 (Alpha 0)으로 페이드
렌더러 재질 : 원본과 동일한 이미지를 사용하지만 "입자 / 알파 혼합"셰이더가 있습니다.
파티클 시스템 솔루션과 마찬가지로 2dtoolkit을 사용하여 동일한 효과를 만들 수 있습니다. 스프라이트 만 부착 된 3 개의 어린이 게임 오브젝트를 캐릭터에 추가하십시오. 필요에 따라 알파와 색상을 변경하십시오. 그런 다음 캐릭터의 속도에 따라 스프라이트의 로컬 위치를 변경할 수 있습니다.
myTransform.localPosition = characterSpeed * distanceFactor;
파티클과 비교하여 드로우 콜을 저장하고 매끄럽게 또는 엇갈리게하려는 경우 효과의 스프레드를 완벽하게 제어 할 수 있습니다.
LVBen에서 제공하는 파티클 시스템 솔루션은 작동하지만 스프라이트에 2D 툴킷을 사용할 때 가장 적합한 솔루션은 아닙니다. 주된 이유는 파티클 시스템의 고스트 트레일 머티리얼을 메인 프리 팹의 현재 스프라이트 애니메이션과 동기화 할 수 없기 때문입니다.
다음은 내가 사용한 2D 툴킷 친화적 솔루션입니다.
고스트 트레일을 시작하려는 프리 팹의 경우 빈 게임 오브젝트를 부착하여 루트 역할을합니다. 이 루트 아래에서 애니메이션 오브젝트를 원하는지 여부에 따라 tk2dSprite 또는 tk2dSpriteAnimator를 원하는만큼 붙이고 게임 오브젝트를 추가하고 (4를 추가) 고스트 / 페이딩 어웨이 효과를 얻기 위해 해당 색상의 알파 값을 적절하게 조정합니다.
상위 상위 업데이트에서
// 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;
}
이 솔루션은 고스트 스프라이트의 애니메이션을 메인 스프라이트와 동기화하면서 후행 고 스팅 효과를 만듭니다.