티스토리 뷰
[ 목표 ]
간단한 공굴리기 게임을 만들면서
오브젝트의 컴포넌트 중 Collider, RigidBody를 살펴봅니다.
그리고 Physics Material, Material도 함께 살펴보겠습니다.
[1] 프로젝트 만들기
HelloBall 이라는 이름의 프로젝트를 만들어줍니다.
SampleScene을 Main으로 이름바꾸고 저장해줍니다.
[2] 공이 굴러갈 경사면 + 공 추가
3D Object > Cube 를 이용해서 경사면을 만들어줍니다.
3D Object > Sphere를 이용해서 공을 만들어줍니다.
Main Camera를 선택하면 아래 Game Preview가 보이는데 (실제 게임에서 보이는 화면)
이걸 참고해서 오브젝트들을 위치시켜줍니다.
[3] 공의 Sphere Collider 컴포넌트 살펴보기 for 충돌
유니티에서는 오브젝트에 다양한 컴포넌트를 설정할 수 있습니다.
(컴포넌트란 오브젝트의 기능을 의미한다고 생각하면 됩니다)
해당 오브젝트를 클릭하고 오른쪽 inspector창을 통해 현재 설정된 component를 보거나 추가할 수 있습니다.
공을 눌러보면 Sphere에는 처음부터 기본으로 설정된 component가 있는 것을 볼 수 있습니다.
바로 Sphere Collider..!
유니티에서는 Collider로 오브젝트끼리의 충돌을 판정합니다.
각각의 오브젝트에 Collider Componet를 설정해두면 자동으로 충돌 판정을 연산합니다.
Cube에는 Box Collider, Sphere에는 Sphere에는 Shpere Collider가 기본 설정되어있습니다.
저 체크박스를 풀면 충돌판정이 이루어지지 않습니다.
그럼 공은 경사면과의 충돌을 감지하지 못하니까 공을 아래로 내려가게 해준다면 경사면 위에 있지 못하고 경사면을 뚫고 가겠죠..?!
[4] 공에 RigidBody 컴포넌트 추가하기 for 중력
게임을 play해봐도 공이 움직이지 않는데요,
중력의 영향을 받지 않아서 그럽니다..!
Add Component > Physics > RigidBody 를 해줍니다.
Rigidbody 컴포넌트는
User Gravity가 기본으로 체크되어있습니다.
Sphere Collider와 Rigidbody 컴포넌트 두개가 같이 있으므로
이제 Game을 Play하면 공이 현실세계? 물리세계? 에서 처럼 움직이게 됩니다.
[5] 공에 Bounce Physical Material 추가 해주기 for 탄성
이번에는 현실세계에서 처럼 공이 바닥에 닿으면 튀어오르도록 탄성을 줘볼게요...!
이것은 물리적인 재질에 대한 설정이므로
Project > + 누르기 > Physical Material을 해줍니다. (또는 Assets에서 오른쪽 마우스 누르고 create 해도 됩니다)
그리고 추가된 Physical Material 이름을 Bounce로 지정해주세요
Bounce를 클릭해보면 설정할 수 있는 값들이 보입니다.
- Dynamic Friction: 동적인 상태(움직이고 있는 상태)의 오브젝트의 마찰계수 (0~1사이의 값)
- Static Friction: 정적인 상태(정지상태)의 오브젝트 마찰계수 (0~1사이의 값)
마찰계수가
0이면 마찰이 전혀 없어져서 얼음 위를 미끄러지는 것과 같은 상태가 됨
1이면 마찰이 강하게 되어 미끄러지기 힘듬
- Bounciness: 반발계수. 오브젝트가 물리적으로 부딪힐때 반발하는 계수 (0~1사이의 값)
반발계수가
0이면 전혀 튀어오르지 않음
1이면 크게 튀어오름
- Friction Combine: 두 오브젝트가 물리적으로 부딪힐 때의 마찰계수 계산 방법
- Bounce Combine: 두 개체가 물리적으로 부딪힐 때의 마찰계수 계산 방법
Combine에 넣을 수 있는 값들
1. Average: 두 오브젝트의 계수의 평균값이 적용됨
2. Multiply: 두 오브젝트의 계수의 곱이 적용됨
3. Mininum: 두 오브젝트 중 계수가 작은 쪽의 값이 적용됨
4. Maxinum: 두 오브젝트 중 계수가 큰 쪽의 값이 적용됨
Bounciness를 0 -> 0.8로 바꿔주겠습니다.
Bounce를 Scene의 ball에 마우스로 끌어다놓아서 추가해줍니다.
Sphere Collider의 Material로 들어가게 됩니다.
그리고 다시 Play해보면 Bounce가 잘 작동하는 것을 볼 수 있습니다.
[5] 오브젝트에 Material 추가하기 for 색깔
유니티에서 오브젝트의 기본 색은 회색인데 바꿔보겠습니다.
Material를 오브젝트에 추가해주면 됩니다
Project에서 +를 누르고 Material을 추가합니다.
이름은 BallColor로 해줍니다.
Albedo를 클릭해주고
색깔을 정합니다.
그리고 Ball Color를 Scene의 Ball 오브젝트로 끌어다놓으면 추가끝-!
동일한 방법으로 Slope Color를 만들고
이것을 Scene의 Slope 오브젝트 4개에 각각 마우스로 끌어다놓아서 추가해줍니다.
[ 추가 ]
Assets 폴더 구성을 어떻게 하는 것이 좋은건지 모르겠는데
일단 Main Scene을 Scenes 폴더에 끌어넣어줬습니다..!
이 폴더는 원래부터 있던 거여서,,
그리고 Scene폴더에서 원래 있던 Sample Scene을 지워주고
Main만 있게 해줬습니당,,
[ Referece ]
'🎨 > Unity' 카테고리의 다른 글
[Unity] Player, PlayerFollowCamera 추가하기 with Starter Assets (0) | 2022.02.03 |
---|---|
[Unity] 게임 실행 중일 때 에디터의 색상변경하기 (Playmode tint) (0) | 2021.02.11 |
[Unity] 뷰포리아(Vuforia) SDK (2) - 이미지 타겟 추가 / iOS 디바이스 빌드 (0) | 2021.02.07 |
[Unity] 뷰포리아(Vuforia) SDK (1) - 설치 / 라이센스 키 등록 (1) | 2021.02.07 |
[Unity] 유니티 설치 & 에디터, 단축키, 트랜스폼 툴 살펴보기 (0) | 2021.01.31 |
- Total
- Today
- Yesterday
- 장고 Custom Management Command
- github actions
- PencilKit
- METAL
- flutter dynamic link
- ribs
- drf custom error
- ipad multitasking
- 장고 URL querystring
- Django Heroku Scheduler
- 플러터 얼럿
- Django Firebase Cloud Messaging
- Flutter Clipboard
- Flutter Spacer
- Flutter Text Gradient
- Sketch 누끼
- Watch App for iOS App vs Watch App
- Django FCM
- flutter build mode
- flutter 앱 출시
- Flutter getter setter
- Dart Factory
- SerializerMethodField
- cocoapod
- 플러터 싱글톤
- flutter deep link
- DRF APIException
- Flutter 로딩
- 구글 Geocoding API
- Python Type Hint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |