요약: 이 섹션에서는 MMFloatingText 시스템을 사용하여 게임 세계에 텍스트를 생성하는 방법을 설명합니다.
테이블 내용
|
소개
게임에서 플레이어에게 화면에 특정 위치에서 관련된 값을 전달하고 싶을 때가 자주 있습니다. 예를 들어 데미지 숫자, 생성된 화폐, 또는 텍스트 메시지 등이 될 수 있으며, 이는 여러분의 선택에 달려 있습니다!
Feel은 게임에 만족스러운 플로팅 텍스트를 쉽게 추가할 수 있도록 도와줍니다.
설정
FeelTactical 데모 씬에서 플로팅 데미지 텍스트의 예제를 찾을 수 있습니다. 데미지 텍스트 피드백에는 MMFloatingTextSpawner가 필요하며, 이 씬에서는 Managers 노드 아래에 각각의 슈터/큐브에 하나씩 총 세 개의 MMFloatingTextSpawner가 있습니다. 각 전술 슈터에는 ShootFeedbacks가 바인딩되어 있으며, 각각의 슈터는 플로팅 텍스트 피드백을 트리거합니다. 각각의 피드백은 특정 채널을 대상으로 하며, 이는 각각의 MMFloatingTextSpawners 중 하나에서 해당 채널과 일치하는 것으로 잡힙니다.
- 첫 번째 스포너는 매우 기본적인 플로팅 텍스트를 생성합니다.
- 두 번째 스포너는 생성 시 MMF_Player를 재생하여 회전, 위치, 색상 및 텍스트 간격을 애니메이션화하는 피드백 파워드 텍스트를 생성합니다.
- 세 번째 스포너는 TextMeshPro 플로팅 텍스트를 생성합니다.
피드백을 통해 플로팅 텍스트를 재생하는 방법 설정
- Unity 2022.3.23f1(이상)에서 새로운 프로젝트를 생성하고, 패키지 매니저를 통해 Feel v4.1.2(이상)를 가져옵니다.
- 빈 씬(또는 기존 씬)에서 새로운 빈 게임 오브젝트를 생성하고, 이름을 "FloatingTextSpawner"로 설정한 후 MMFloatingTextSpawner 컴포넌트를 추가합니다.
- 프로젝트 패널에서 MMFloatingText 프리팹을 검색하고, 이를 새로 생성한 스포너의 Pooler 설정에서 PooledSimpleMMFloatingText 슬롯에 드래그합니다.
- 새로운 빈 오브젝트를 생성하고, 이름을 "TestPlayer"로 설정한 후 위치를 (0,0,0)으로 설정합니다. 그런 다음, MMF Player 컴포넌트를 추가합니다.
- MMF Player 컴포넌트에 새로운 UI > Floating Text 피드백을 추가합니다.
- 에디터에서 재생 버튼을 누른 후, MMF Player의 초록색 재생 버튼을 누르면 "100" 텍스트가 매번 생성됩니다.
추가 기능: 강도 제어 추가
- 더 나아가서, MMF Player의 강도를 피드백에 적용하려면 "use intensity as value" 옵션을 체크할 수 있습니다. 아래 클래스와 같이 프로젝트에 새로운 클래스를 생성하고, 위 단계를 완료한 후 TestIntensityAsValue 컴포넌트를 MMF Player에 추가하세요. 에디터에서 재생 버튼을 누른 후 TriggerFeedback 버튼을 누르면 매번 랜덤한 값이 표시됩니다. 실제 게임에서는 랜덤 값 대신 데미지 값을 전달하고 싶을 것입니다! 값이 반올림되지 않는 것을 알 수 있는데, 이를 변경하려면 Floating Text 피드백에서 반올림 방법을 선택할 수 있습니다.
using MoreMountains.Feedbacks;
using UnityEngine;
public class TestIntensityAsValue : MonoBehaviour
{
[MMFInspectorButton("TriggerFeedback")]
public bool TriggerFeedbackButton;
private MMF_Player _myPlayer;
private void Start()
{
// 시작 시 MMF Player 컴포넌트를 가져옵니다.
_myPlayer = this.gameObject.GetComponent<MMF_Player>();
}
private void TriggerFeedback()
{
float randomIntensity = Random.Range(0f, 100f);
_myPlayer.PlayFeedbacks(this.transform.position, randomIntensity);
}
}
런타임에 값 변경하기
MMF_FloatingText의 Value 속성을 포함한 다른 모든 속성을 동적으로 변경할 수도 있습니다. 아래 예제에서는 값을 랜덤 부동 소수점으로 설정하고 색상을 화려한 그라디언트로 설정합니다.
using MoreMountains.Feedbacks;
using UnityEngine;
public class TestModifyAtRuntime : MonoBehaviour
{
[MMFInspectorButton("TriggerFeedback")]
public bool TriggerFeedbackButton;
private MMF_Player _myPlayer;
private Gradient gradient;
private GradientColorKey[] colorKey;
private GradientAlphaKey[] alphaKey;
private void Start()
{
// 시작 시 MMF Player 컴포넌트를 가져옵니다.
_myPlayer = this.gameObject.GetComponent<MMF_Player>();
}
private void TriggerFeedback()
{
float randomValue = Mathf.Round(Random.Range(0f, 100f));
MMF_FloatingText floatingText = _myPlayer.GetFeedbackOfType<MMF_FloatingText>(); // 플레이어에 하나의 플로팅 텍스트 피드백만 있는 경우 가정, 더 복잡한 방법은 문서 참조
// 표시 값을 랜덤 값으로 설정합니다.
floatingText.Value = randomValue.ToString();
// 화려한 색상을 설정합니다.
gradient = new Gradient();
// 색상 키를 상대 시간 0과 1(0% 및 100%)에 설정합니다.
colorKey = new GradientColorKey[2];
colorKey[0].color = Color.red;
colorKey[0].time = 0.0f;
colorKey[1].color = Color.blue;
colorKey[1].time = 1.0f;
// 알파 키를 상대 시간 0과 1(0% 및 100%)에 설정합니다.
alphaKey = new GradientAlphaKey[2];
alphaKey[0].alpha = 1.0f;
alphaKey[0].time = 0.0f;
alphaKey[1].alpha = 0.0f;
alphaKey[1].time = 1.0f;
gradient.SetKeys(colorKey, alphaKey);
floatingText.ForceColor = true;
floatingText.AnimateColorGradient = gradient;
_myPlayer.PlayFeedbacks(this.transform.position);
}
}
'유니티 에셋 > Feel' 카테고리의 다른 글
MMStateMachine (3) | 2024.07.14 |
---|---|
MMSceneLoading (0) | 2024.07.14 |
MMProgressBar (1) | 2024.07.14 |
MMRadio (1) | 2024.07.14 |
MMSequencer (2) | 2024.07.14 |