갓똥
나는야 프로그래머
갓똥
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 프로그래밍 (146)
      • 자바 (9)
      • 안드로이드 (2)
      • 유니티 (20)
      • C++ (38)
      • C# (56)
      • HTML (2)
      • 파이썬 (3)
      • 자료구조 (2)
      • 알고리즘 (0)
      • 문제풀이 (4)
      • 디자인 패턴 (7)
      • 카카오톡 봇 (1)
      • 엑셀 (1)
      • 기타 (1)
    • 게임 (21)
      • 테일즈위버 (0)
      • 카이로소프트 (1)
      • 순위 (19)
      • 기타 (1)
    • 일상 (13)
      • 카페 (1)
      • 방탈출 (12)
    • 기타 (6)
      • 웃긴자료 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • C++
  • 자바
  • C# boxing
  • pc게임 순위
  • c# collection
  • 글로벌게임매출
  • pc 게임 순위
  • 알고리즘
  • 유니티 그래프 그리기
  • c# coroutine
  • 모바일 게임 순위
  • C++ 상속
  • 2020년 게임 매출
  • c# 코루틴
  • C# 예외 처리
  • 게임 매출 순위
  • c# Thread
  • 유니티 골드그래프
  • C++ virtual
  • c# unboxing
  • 유니티 그래프
  • 게임매출순위
  • 롤 골드그래프
  • C++ 소멸자
  • Unity Graph
  • 게임 디자인 패턴
  • c# delegate
  • 전세계게임매출순위
  • 강남 방탈출
  • 전세계 게임 매출

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갓똥

나는야 프로그래머

[유니티] 롤 골드그래프를 만들어보자(2) - 선 찍기
프로그래밍/유니티

[유니티] 롤 골드그래프를 만들어보자(2) - 선 찍기

2021. 8. 10. 01:21
728x90
반응형

UI를 이용하여 롤 골드그래프를 만들어보자

코드만 필요하신분은 아래로 내리시면 있습니다.

 

이전 결과물

이전에 점까지 찍었으니 이제 선을 찍을 차례입니다.

각 부분 코드만 정리하고 전체코드는 마지막에 올리겠습니다.


5. 각 점을 연결한 선을 찍는다.

선을 연결하기 전에 이전포스팅에서 말씀드렸다싶이 마스크를 이용하려하니

먼저 선에 붙일 마스크를 만들고 코드를 작성하겠습니다.

1. 이전에 만든 Line 프리팹에 Mask 컴포넌트를 추가한다.

2. MaskPanel 빈 오브젝트를 만들고

3. 자식으로 BLue, Purple을 추가하고 프리팹으로 만들면 끝

 

코드 고고

public Transform LineGroup;
// 생성한 선을 자식으로 둘 부모
public GameObject Line;
// 선 프리팹
public GameObject MaskPanel;
// Mask 프리팹

private void DrawGoldGraph()
{
    // ---
    // 격차 최대값 등...
    // ---

    Vector2 prevDotPos = Vector2.zero;
    // 이전 점과 현재 점을 이어야하므로 이전 점의 위치를 저장한다.

    for (int i = 0; i < SAMPLE_RATE; i++)
    {
        // ---
        // 점 찍기
        // ---
        
        if (i == 0)
        {
            prevDotPos = dotRT.anchoredPosition;
            continue;
        }
        // 최초 점을 찍을 땐 연결할 선이 없으므로 넘긴다.

        GameObject line = Instantiate(Line, LineGroup, true);
        line.transform.localScale = Vector3.one;

        RectTransform lineRT = line.GetComponent<RectTransform>();
        Image lineImage = line.GetComponent<Image>();

        float lineWidth = Vector2.Distance(prevDotPos, dotRT.anchoredPosition);
        float xPos = (prevDotPos.x + dotRT.anchoredPosition.x) / 2;
        yPos = (prevDotPos.y + dotRT.anchoredPosition.y) / 2;
        // 그림으로 설명..

        Vector2 dir = (dotRT.anchoredPosition - prevDotPos).normalized;
        float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
        lineRT.anchoredPosition = new Vector2(xPos, yPos);
        lineRT.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, lineWidth);
        lineRT.localRotation = Quaternion.Euler(0f, 0f, angle);
        // 두 점 사이의 각도를 tan를 이용하여 구한다.
        // atan를 이용해 라디안 값을 구하고 Rad2Deg를 이용해 라디안을 각도로 변환해준다.

        GameObject maskPanel = Instantiate(MaskPanel, Vector3.zero, Quaternion.identity);
        maskPanel.transform.SetParent(LineGroup);
        maskPanel.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
        maskPanel.transform.SetParent(line.transform);
        // 마스크 패널 생성

        prevDotPos = dotRT.anchoredPosition;
        // 이전 점 좌표 업데이트
    }
}


여기까지 결과물

아주 잘된다.

 

2편으로 끝내고 싶었는데 피곤해서 이만 줄이고 다음편으로..

728x90
반응형

'프로그래밍 > 유니티' 카테고리의 다른 글

[유니티] 롤 골드그래프를 만들어보자(4) - 최종 코드  (0) 2021.08.12
[유니티] 롤 골드그래프를 만들어보자(3) - 그래프 내부 채우기  (2) 2021.08.12
[유니티] 롤 골드그래프를 만들어보자(1) - 점 찍기  (26) 2021.08.09
[유니티] Delegate를 이용한 공통 팝업  (0) 2021.07.06
[유니티] UI 클릭 등 이벤트 처리  (0) 2020.12.10
    '프로그래밍/유니티' 카테고리의 다른 글
    • [유니티] 롤 골드그래프를 만들어보자(4) - 최종 코드
    • [유니티] 롤 골드그래프를 만들어보자(3) - 그래프 내부 채우기
    • [유니티] 롤 골드그래프를 만들어보자(1) - 점 찍기
    • [유니티] Delegate를 이용한 공통 팝업
    갓똥
    갓똥
    공부하며 알아가는 내용을 정리해 봅니다.

    티스토리툴바