본문 바로가기

유니티

[유니티/Unity] 2D 오브젝트 pivot 변경

반응형

 

각도 설정하는 게이지 만들기

게임을 시작하면 각도 게이지 오브젝트가 0도에서 90도 사이를 반복적으로 움직이고, 사용자가 이벤트를 입력했을때 각도 값을 저장하기 위한 시스템을 만들겠습니다. (ex 자동차 속도계 ) 



목차

  • 2D 오브젝트 Pivot 변경
  • 오브젝트가 측정할 각도 반경 설정하기 



2D 오브젝트 Pivot 변경


2D 오브젝트를 생성하면 오브젝트 가운데 피봇을 확인할 수 있습니다. 오브젝트가 회전할때 피봇을 중심으로 회전하기 때문에 필요에 따라 피봇을 변경해줘야하는데, 기본으로 제공하고 있진 않은것 같습니다.

기본으로 생성된 피봇으로 회전값을 변경하면 바람개비와 같이 회전하기 때문에 원하는 시스템을 만들 수 없습니다. 

각도 게이지의 피봇으로 사용할 빈 오브젝트(angle)를 생성해 설정하고, 게이지 오브젝트(angleObj)를 빈 오브젝트(angle)의 자식 오브젝트로 이동시키고 빈 오브젝트(angle)의 회전값을 변경하면 빈 오브젝트(angle)를 기준으로 게이지 오브젝트(angleObj)가 회전하는 결과를 얻을 수 있습니다.



각도 반경 설정하기


게이지 오브젝트와 최저,최고 각도 값은 public 접근제한자를 사용해 inspcetor에서 직관적으로 값을 변경하도록 했습니다.

그리고 FixedUpdate() 에서 setAngleVaule() 함수를 호출해 최저에서 최고 사이로 오브젝트의 회전값을 변경합니다.


 

  public GameObject angleObj;

  private float nowAngleValue;

  private bool isAngleUp;

  public float lowAngleValue;

  public float highAngleValue;


   .....


   private void setAngleValue()

    {

        if (isAngleUp)

        {

            nowAngleValue+=5;

        }

        else

        {

            nowAngleValue-=5;

        }


        if (nowAngleValue >= highAngleValue)

        {

            isAngleUp = false;

        }else if (nowAngleValue <= lowAngleValue)

        {

            isAngleUp = true;

        }


        if (angleObj != null)

        {

            angleObj.transform.rotation = Quaternion.Euler(0, 0, nowAngleValue);

        }

    }





 위처럼 작성한 함수를 bool 변수 값에 따라 실행되게 했습니다. 

버튼 이벤트로 bool 변수 값을 조정하면, 게임이 시작하면 게이지가 움직이다 버튼 이벤트가 발생하면 게이지가 멈추면서 각도값을 표시하도록 했습니다.



해당 포스팅은 지극히 주관적인 내용으로 저자의 복기 목적으로 작성된 것이고, 내용에대해 수정이나 추가 요청은 언제든 환영합니다. 





반응형

'유니티' 카테고리의 다른 글

[유니티/Unity] 물체 이동  (0) 2018.06.02
[유니티/Unity] Rigidbody2d body type  (2) 2018.05.27
[유니티/Unity] Slider 사용하기  (2) 2018.05.07
[유니티/Unity] 윈도우 단축키 모음  (0) 2018.05.07