튜토리얼에서 배우는 라이프 게이지 구현 방법
개요
마지막 기사 프로젝트를 기반으로 라이프 게이지 UI를 추가합니다.
본 기사는 Tanks! (대전형의 전차 게임)의 내용을 일부 발췌해 간략화한 것이 됩니다.
절차
플레이어의 발에 라이프 게이지 표시
플레이어의 발에 라이프 게이지 표시
Create > UI > Slider
Canvas에 대해 다음과 같이 변경
Canvas의 크기 조정 가능
Inspector > Canvas Scaler(Script) > Render Mode > World Space로 변경
Canvas의 표시 위치, 크기를 Player의 발밑이 되도록 변경
Inspector > Rect Transform > Position (0, 0.1, 0)으로 변경
Inspector > Rect Transform > Width와 Height를 2로 변경
Inspector > Rect Transform > Rotation (90, 0, 0)으로 변경
슬라이더에 대해 다음과 같이 변경
Slider를 Canvas 전체로 늘려 표시
Hierarchy 뷰에서 Slider와 부하의 Background, Fill Area, Fill을 동시에 선택한 상태에서 Anchor 변경
Inspector > Anchor Presets > Alt 키를 누른 상태에서 오른쪽 하단의 stretch를 선택합니다.
슬라이더의 노브 부분의 UI 삭제
Hierarchy 뷰에서 Handle Slide Area 삭제
사용자 조작으로 변경사항 사용 안함
Inspector > Slider(Script) > Intractable 확인란 선택 취소
Inspector > Slider(Script) > Transition None으로 변경
최대값 설정
Inspector > Slider(Script) > Max Value를 100으로 변경
초기값 설정
Inspector > Slider(Script) > Value를 100으로 변경
슬라이더의 색상을 임의의 색상으로 변경
슬라이더 아래의 Fill을 선택한 상태에서
Inspector > Image(Script) > Color 를 임의의 색으로 변경
데미지를 입을 경우 Slider의 값을 스크립트에서 뺍니다.
나중에 설명하는 LifeGaugeController.cs를 만들고 Slider에 연결
라이프 게이지를 원형 표시로 변경
Inspector > Texture type > Sprite(2D and UI)로 변경
Unapplied import settings 대화 상자가 표시되므로 Apply를 선택합니다.
소스 코드
Player.cspublic class Player : MonoBehaviour
{
// 変更がない箇所は省略
LifeGaugeController m_Life;
void Awake ()
{
m_Life = GetComponentInChildren<LifeGaugeController>();
}
public void TakeDamage (int damage)
{
// ライフゲージに反映
m_Life.OnGaugeUpdate(hp);
}
}
LifeGaugeController.cspublic class LifeGaugeController : MonoBehaviour {
private Slider m_Slider; // 現在のライフを示すスライダー
private Quaternion m_RelativeRotation; // シーンの開始時のローカル空間のローテーション
private void Awake()
{
m_Slider = GetComponent<Slider>();
}
private void Start()
{
m_RelativeRotation = transform.parent.localRotation;
}
private void Update()
{
// スライダーがプレイヤーの方向に追従して回転してしまうのを防ぐため
// 初期値を設定し直す
transform.rotation = m_RelativeRotation;
}
public void OnGaugeUpdate(float life)
{
m_Slider.value = life;
}
}
요약
소스 코드는 GitHub에 업로드 중입니다.
Reference
이 문제에 관하여(튜토리얼에서 배우는 라이프 게이지 구현 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hanadaUG/items/6527aa0b550e50536a0a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class Player : MonoBehaviour
{
// 変更がない箇所は省略
LifeGaugeController m_Life;
void Awake ()
{
m_Life = GetComponentInChildren<LifeGaugeController>();
}
public void TakeDamage (int damage)
{
// ライフゲージに反映
m_Life.OnGaugeUpdate(hp);
}
}
public class LifeGaugeController : MonoBehaviour {
private Slider m_Slider; // 現在のライフを示すスライダー
private Quaternion m_RelativeRotation; // シーンの開始時のローカル空間のローテーション
private void Awake()
{
m_Slider = GetComponent<Slider>();
}
private void Start()
{
m_RelativeRotation = transform.parent.localRotation;
}
private void Update()
{
// スライダーがプレイヤーの方向に追従して回転してしまうのを防ぐため
// 初期値を設定し直す
transform.rotation = m_RelativeRotation;
}
public void OnGaugeUpdate(float life)
{
m_Slider.value = life;
}
}
소스 코드는 GitHub에 업로드 중입니다.
Reference
이 문제에 관하여(튜토리얼에서 배우는 라이프 게이지 구현 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hanadaUG/items/6527aa0b550e50536a0a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)