티스토리 뷰
키보드 조작보다 마우스로 클릭하는게 훨씬 간단한 느낌이었다. 아직 마우스로 클릭하는 초반이어서 그럴진 모르겠지만, 코드도 훨씬 간단하고 빙글빙글 돌아가고 클릭클릭 하는 느낌이 재밌었다!
역시 쉬운걸 잘하게 되고 잘하는게 재밌고 그런 것인가보다. 점점 잘해지면 어려운걸 잘하고 어려운게 재밌게 되는 날이 오겠지.
Gamelog 05_1. 마우스로 클릭해봤다.
마우스 터치는 충돌판정
마우스 터치는 Box Collider 2D
를 사용하여 마우스와의 충돌로 표현할 수 있다.OnMouseDown()
이라는 함수를 사용하며, 게임 오브젝트와 마우스의 충돌 감지시 OnMouseDown()
이 실행된다.
이때, OnMouseDown()
은 컴퓨터의 마우스만 사용 가능하다.
스마트폰 터치의 경우, Raycast 사용
→ 게임 화면 터치시, 안쪽 방향으로 Ray를 쏘아 뭔가에 충돌하는지 조사하는 방식
if (Input.GetMouseButtonDown(0)) {
var wPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
var hit = Physics2D.Raycast(wPos, Vector2.zero);
if (hit) {
if (hit.collider.gameObject.name == this.name) {
// 할 것
}
}
}
마우스 터치시 사라지기
SetActive(false)
사용하여 사라지기 표현
이때는, 미리 false를 하는 것이 아니기 때문에 multi 설정해도 문제 없다
void MouseDown() {
this.gameObject.SetActive(false);
}
마우스 터치시 회전하기
마우스 터치 후 계속 회전하기 위해서는 FixedUpdate()
사용
마우스 터치를 그만하면 멈추도록 하기 위해서는 OnMouseUp()
사용
OnMOuseUp()
: 마우스 터치를 그만하면 무언가를 한다.
public float angle = 360;
float rotateAngle = 0;
void OnMouseDown() {
rotateAngle = angle;
}
void OnMouseUp() {
rotateAngle = 0;
}
void FixedUpdate() {
this.transform.Rotate(0, 0, rotateAngle/50);
}
응용하여 룰렛돌리기
FixedUpdate()
에 하기와 같은 값을 추가하여 점점 줄어들도록 구현가능
rotateAngle = rotateAngle * (float)0.98;
Gamelog 05_2. 오브젝트 중첩 순서
중첩 순서 지정 3가지 방법
① Sorting Layer: 가장 강력한 지정 방법
- 레이어의 깊이에 따라 지정 가능
- 제대로 설계할 때 적합한 방법
- Sorting Layer를 Sky - Ground - Default로 설정시,
가장 아래에 있는 Default Layer가 가장 앞으로, 위에 있는 Sky Object Layer가 위로 나오게 된다.
② Order in Layer: 같은 중첩 레이어 내에서 번호로 깊이를 지정하는 방법
- Sky Object 둘다 0일 때
- Sky Object 뒤에 구름 10으로 변경시
③ Position Z: 같은 중첩 레이어 내에서 Order in Layer도 동일할 때 지정하는 방법
- 메인 카메라와 거리가 가까울수록 앞에 위치하는 방법
- 메인 카메라보다 앞쪽에 위치 필요 → -9.7 이상인 값
- Transform의 Position Z의 값이 작을수록 가까움
Transform의 Position Z의 값이 클수록 멈
TIP!
보이는 깊이는 앞쪽에 있어도, 터치할 때의 깊이가 다른 경우 있음.
EX) Order in Layer로 앞쪽에 표시했는데, 클릭시 안쪽에 있는 오브젝트가 반응하는 경우
→ 이런 경우에는 Position Z로 앞쪽에 표시하면 제대로 터치할 수 있게 됨
'프로그래밍 > Unity' 카테고리의 다른 글
Gamelog 07. 드디어 움직인다. (0) | 2023.01.28 |
---|---|
Gamelog 06. Main Camera를 지웠다. (0) | 2023.01.28 |
Gamelog 04. 게임이 보이기 시작했다. (2) | 2023.01.24 |
Gamelog 03. 키보드를 쓰기 시작했다. (0) | 2023.01.24 |
Gamelog 02. 스크립트를 깔짝대본다. (0) | 2023.01.22 |