2016. 9. 9. 23:29
https://blog.naver.com/nagne2011/220809195323
-Unity : 출시도전 (가제)"산적왕" - 1 - 마을 기획
아직 기획이 확실하지 않은 다른 씬 보다 기획이 먼저 잡힌 마을에 대한 기본틀을 만들어 보기로 했다. 대...
blog.naver.com
아직 기획이 확실하지 않은 다른 씬 보다
기획이 먼저 잡힌 마을에 대한 기본틀을 만들어 보기로 했다.
대략 이렇게 만들생각이다
아래의 지구?처럼 둥근 원이 있고,
그 위에 건물이 있으며 좌우측 화살표 버튼을 누르면 지구?가 빙글 돌아가면서 옆에 있던 건물이 가운데로 오는 개념이다
빙글빙글 돈다고 생각하면 된다
먼저 좌우측 버튼을 만들어준다
그다음 슬롯으로 사용할 이미지를 위 사진처럼 배치하면 끝
참 쉽죠?
....저렇게 배치하려고 온갖 수학공식을 다가져다 붙여서 겨우겨우..
못만들었다
그래서 위 사진처럼 가운데에 빈 오브젝트를 만들어두고
오브젝트를 120도 회전한후, 원점에 슬롯을 생성한뒤 빈오브젝트에 넣어주고, 다시 120도 돌리고 슬롯을 생성해서 넣어주고
3번 반복했다
같은 방법을 응용하면 5각형도 만들 수 있다
이제 위 방법을 이용해서 함수로 만들어보자
1
2
3
4
5
6
7
8
9
10
11
|
public int spinSlot = 0;
//슬롯은 몇개를 만들어줄까
public GameObject spinObject;
//빙글빙글 돌아갈 중심 오브젝트
public GameObject slotObejct;
//생성할 슬롯 오브젝트의 프리팹
public Quaternion Sangle = Quaternion.identity;
//돌아갈 각도
|
cs |
먼저 선언을 해준뒤
중심 오브젝트와 슬롯으로 사용할 프리펩을 넣어준다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
void Awake ()
{
//돌아갈 각도를 초기화해준다
Sangle.eulerAngles = new Vector3 (0, 0, 0);
for (int i = 0; i < spinSlot; i++)
{//생성할 슬롯 갯수만큼 반복
string str = string.Format ("slot_{0}", i);//빼도 상관없다. 슬롯의 이름을 이쁘게 만들생각이다
GameObject obj = Instantiate (slotObejct, Vector3.zero, Quaternion.identity) as GameObject;
//슬롯생성
obj.name = str;//슬롯 이름정해주기
obj.transform.SetParent (spinObject.transform);
//슬롯을 중심오브젝트의 아들로 넣어주고 크기를 1로 초기화한다
obj.transform.localScale = new Vector3 (1, 1, 1);
spinObject.transform.Rotate (new Vector3 (0, 0, 360/spinSlot));
//그리고 중심 오브젝트를 360 / 슬롯갯수 만큼 회전한다
}
//즉, 슬롯 갯수만큼 생성,회전,생성,회전을 반복하는것
//예를들어 슬롯이 3개라면, 생성후 회전하는걸 3번 반복하는거다
spinObject.transform.Rotate (new Vector3 (0, 0, 0));
//그다음 중심 오브젝트를 초기화해준다
}
|
cs |
테스트 용으로 5개를 생성해보면 깔끔하게 잘 나온다
이제 회전차례
회전은 간단하다
1
2
3
4
5
|
void Update ()
{
spinObject.transform.rotation
= Quaternion.Slerp (spinObject.transform.rotation, Sangle, Time.deltaTime * 5.0f);
}
|
cs |
프레임마다 중심 오브젝트의 각도를 아까 초기화해둔 Sangle 만큼 회전시켜준다
그리고 버튼함수를 만들어서
1
2
3
4
5
6
7
8
9
|
public void bLeftButton()
{
Sangle.eulerAngles += new Vector3(0,0,360/spinSlot);
}
public void bRightButton()
{
Sangle.eulerAngles -= new Vector3(0,0,360/spinSlot);
}
|
cs |
매
버튼 클릭시 마다 Sangle에다가 360/슬롯 숫자만큼 더해준다
그러면 아래와 같이 정상적으로 작동하게 된다
'유니티 > 실습' 카테고리의 다른 글
출시도전 (가제)"레모의꿈" - 3 - 미니맵 기획(List) (0) | 2022.02.14 |
---|---|
출시도전 (가제)"산적왕" - 2 - 상점 기획 (0) | 2022.02.14 |
출시도전 (가제)"산적왕" - 0 - 기획 (0) | 2022.02.14 |
출시도전 - 러닝게임 - 8 - 完 (0) | 2022.02.14 |
출시도전 - 러닝게임 - 7 - 끝이지만 완성은 아닌 (0) | 2022.02.14 |