버튼을 클릭하면 카메라를 회전시키는 이벤트를 만들고 싶었는데
NGUI 튜토리얼 동영상을 봐도 잘 모르겠더라
그래서 한 일주일 고생해서 찾아냄
일단 버튼을 한개 만들고
텍스쳐로 만들어도 상관없고 NGUI에서 기본으로 제공해주는 버튼을 만들어도 상관 없다
이미지를 갖고 있다면 텍스쳐를 통해서 만들고 아닌경우에는 NGUI의 기본 버튼을 사용하자
그리고 스크립트를 하나 만드는데 클릭이벤트 발생 시 움직임을 정의 할 예정이다
버튼을 클릭할때마다 카메라가 회전할 것이기 때문에
개인적으로 부드럽게 움직일 필요가 없어서 speed로 계산하지 않았다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [SerializeField] float targetAngle = 10.0f; //한번 버튼 클릭에 움직일 각도의 크기를 갖는 변수 [SerializeField] float limitAngle = 60.0f; //버튼으로 움직일 수 있는 각도의 크기를 제한 하는 변수 [SerializeField] GameObject mainCamera; private static float angle = 0.0f; //각도를 계산하기 위한 변수 public void RotateLeft() { if (angle > -limitAngle) { Debug.Log("Left"); Debug.Log(angle); angle -= targetAngle; Debug.Log(angle); mainCamera.transform.eulerAngles = new Vector3(0, angle, 0); } } |
나머지는 간단한 코드이기 때문에 설명이 필요할거라고 생각 하지 않는다
eulerAngle에 대한 함수는 http://www.devkorea.co.kr/reference/Documentation/ScriptReference/Transform-eulerAngles.html 을 참조하기 바란다
반드시 함수는 public 으로 선언해야 버튼 이벤트를 전달 받을 수 있다.
그리고 다시 유니티로 돌아와서 그림만 있는 버튼에 (NGUI의 버튼에는 이미 기본으로 만들어 준다 텍스쳐로 만든 버튼만 참고하자)
Box Collider와 UIButton 스크립트, 그리고 만든 스크립트를 붙여준다.
그리고 Box Collider에 있는 Is Trigger속성을 체크하고
UITexture부분에 보면 Collider 부분이 생겼을 것이다
속성을 체크한다
그리고 마지막으로 UIButton스크립트를 열어보면 Colors 부분이 있는데
위부터 보통 마우스오버, 버튼 눌렀을때, 버튼이 사용불가일때 상태이다 버튼에 오버랩돼서 색이 입혀지니
입히고 싶지 않다면 하얀색으로 설정해주면 된다
그리고 OnClick부분에 버튼을 링크시킨다
그러면 Method에 우리가 작성했던 스크립트가 뜨고 public으로 열었던 함수를 설정해주면 된다
버튼에 맞는 함수를 설정하면 OnClick이벤트를 연결할 수 있다.
그러고 플레이를 시켜보면 카메라가 회전 하는 것을 볼 수 있다
'Unity' 카테고리의 다른 글
Unity5 Collider (0) | 2015.03.05 |
---|---|
Unity5 audio 접근법 (0) | 2015.03.04 |
unity5 업데이트시 UnityVS 연결하는 방법 (0) | 2015.03.04 |
4.6버전 guiTexture 대신하기 (0) | 2015.03.04 |
Ray로 무너뜨리는 느낌 주기? (0) | 2014.08.14 |