Unity:: 개발일지 230210 캐릭터 움직임 / 마우스 입력

2023. 2. 10. 01:07·개발/게임
반응형

기억할 것

TextMeshPro 컴포넌트 가져올 때 TextMeshProUGUI를 가져와야 함.

Tip) 컴포넌트명을 모르겠으면 Edit Script로 확인할 수 있는 컴포넌트가 있음 

고민사항

public 변수의 사용을 막기 위해 싱글톤을 사용했는데 InfoUIManager를 public으로 받아서
Managers를 통해 다른 클래스에서 사용할 수 있도록 구성
이 구조대로 가면 지난번에 설계한 것과 비슷한 흐름으로 갈 거 같은데
InfoUIManager를 싱글톤 처리하면 어떠려나..
근데 이걸 싱글톤 처리하면 앞으로 생기는 매니저들도 싱글톤을 사용해서
결국 메모리 관리에 비효율적이게 될거 같다.

해야할 일

<정보창>
타이핑 효과
클릭했을 때 다음 문구로 넘어가도록

230210 이전 내용

스트레스 게이지바 (체력바)

[사용 컴포넌트]  UI - Slider / Image(게이지 색)

[GameObject 구조] Health Bar(Health Bar.cs) - Fill()

코드 구조

[스크립트]  HealthBar.cs / PlayerTest.cs

  >> PlayerTest에서 HealthBar의 메소드를 호출하는 구조

기능

시간에 따라 게이지가 차게 하기

[흐름]

PlayerTest에 IncreaseStress 메소드 구현

키보드 입력 O를 받았을 때 Coroutine을 사용하여 IncreaseStress 함수 호출

[구현]

IEnumerator IncreaseStress(float health)
{
    while(health < maxHealth)
    {
        health += Time.deltaTime * stressSpeed;
        currentHealth = health;
        healthBar.SetHealth(currentHealth);
        yield return new WaitForFixedUpdate();
    }

    Debug.Log("스트레스 만땅");
}

참고자료

Brackeys - Unity에서 HEALTH BAR를 만드는 방법!

 

230210 개발 일지

캐릭터 움직임

[사용 컴포넌트] : Rigidbody2D

 

코드 구조

[스크립트]  PlayerTest.cs

기능

키보드 A, D(혹은 좌우 방향키) 입력시 좌우 이동 및 캐릭터 좌우 반전

[흐름]

Input.GetAxisRaw("Horizontal")로 키보드 입력 받기

입력값에 따라 캐릭터 좌우 설정 (Spine 파일밖에 없어서 spine으로 설정 / 이후 코드변경 필요)

rigidbody.position = 입력된 방향값(hAxis) * 이동속도(speed)

 

[구현]

// Move
float hAxis = Input.GetAxisRaw("Horizontal");
if(hAxis == 0)
   skeletonAnimation.AnimationState.SetAnimation(0, "animation", true);
else
{
   if(hAxis < 0)
       skeletonAnimation.skeleton.ScaleX = Mathf.Abs(skeletonAnimation.skeleton.ScaleX);
   else
       skeletonAnimation.skeleton.ScaleX = -Mathf.Abs(skeletonAnimation.skeleton.ScaleX);
}
rigid.position += Vector2.right * hAxis * speed;

 

마우스 아이템 상호작용

1. 상호작용 가능한 아이템 위에 마우스를 올리면 Cursor 모양 변경

[사용 컴포넌트] : BoxCollider2D

코드 구조

[스크립트]  ItemTest.cs

기능

상호작용 가능한 아이템 위에 마우스를 올리면 Cursor 모양 변경

[흐름]

Resources.Load<Texture2D>로 마우스 이미지 가져오기

MonoBehaviour의 OnMouseOver, OnMouseExit 함수에 Cursor.Setcursor로 커서 모양 변경

 

[구현]

Texture2D cursorOverImage;
Texture2D cursorOriginImage;


void Start()
{
    cursorOverImage = Resources.Load<Texture2D>("Sprites/UI/플레이어 커서");
    cursorOriginImage = Resources.Load<Texture2D>("Sprites/UI/마우스포인터");
}

private void OnMouseOver()
{
    Cursor.SetCursor(cursorOverImage, Vector2.zero, CursorMode.Auto);
}

private void OnMouseExit()
{
    Cursor.SetCursor(cursorOriginImage, Vector2.zero, CursorMode.Auto);
}

 

2. 상호작용 가능한 아이템 클릭시 정보창 출력

[사용 컴포넌트] : BoxCollider2D

코드 구조

[스크립트]  Managers.cs / InfoUIManger.cs / ItemTest.cs

  >> 싱글톤 인스턴스 Managers에서 public 변수인 infoUIManager를 itemTest에서 메소드 호출

기능

상호작용 가능한 아이템 위에 마우스를 올리면 Cursor 모양 변경

[흐름]

1. 싱글톤 인스턴스 Managers 생성

2. ItemTest.cs에서 MonoBehaviour의 OnMouseDown 함수에 정보창 text 설정 및 오브젝트 활성화

 

[구현]

InfoUIManager.cs

    public void EnableUI()
    {
        imageGo.SetActive(true);
    }

    public void DisableUI()
    {
        imageGo.SetActive(false);
    }

    public void SetInfoText(string text)
    {

        TextMeshProUGUI textMeshPro = imageGo.transform.GetChild(0).GetComponent<TextMeshProUGUI>();
        textMeshPro.SetText(text);
    }

ItemTest.cs

private void OnMouseDown()
{
    Managers.Instance.infoUIManager.SetInfoText(infoText);
    Managers.Instance.infoUIManager.EnableUI();
}

구현 영상

 

반응형

'개발 > 게임' 카테고리의 다른 글

Unity:: TDD / Unity Test Framework (업무 회고)  (0) 2023.08.27
Unity:: ScrollRect의 개념 & 동적 정렬  (0) 2023.08.06
Unity:: Layout Group & Layout Element  (0) 2023.07.23
Unity:: UI 해상도 대응  (0) 2023.07.16
Unity:: RectTransform 개념  (0) 2023.07.09
'개발/게임' 카테고리의 다른 글
  • Unity:: ScrollRect의 개념 & 동적 정렬
  • Unity:: Layout Group & Layout Element
  • Unity:: UI 해상도 대응
  • Unity:: RectTransform 개념
나귀당
나귀당
게임 클라이언트 개발자의 개인 블로그 (기술, 개발일지, 성찰)
  • 나귀당
    나귀라 카더라
    나귀당
    • 분류 전체보기 (169)
      • 개발 (26)
        • 게임 (9)
        • 서브 (9)
        • 기타 (8)
      • Computer Science (20)
        • 머신러닝 (5)
        • 정보보안 (6)
        • 컴퓨터비전 (8)
        • 컴퓨터그래픽스 (1)
      • Problem Solving (52)
        • 이론 (17)
        • 문제풀이 (32)
        • 기타 (3)
      • 개인 (56)
        • Careers (1)
        • 회고+계획 (34)
        • 후기 (14)
        • 좌충우돌 (2)
        • 독서 (5)
      • 학교 (업뎃X) (15)
        • 과제 (2)
        • 수업관련 (9)
  • 반응형
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
나귀당
Unity:: 개발일지 230210 캐릭터 움직임 / 마우스 입력
상단으로

티스토리툴바