일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 10월
- 코딩 테스트
- 1월
- 백준
- 기초
- 코딩 기초 트레이닝
- 수학
- 3월
- C/C++
- 5월
- 게임 엔진 공부
- 프로그래머스
- 7월
- 유니티
- 2024년
- 2월
- 입문
- 2025년
- 2022년
- 자료 구조
- 2023년
- 유니티 심화과정
- 개인 프로젝트
- c++
- todolist
- 다이나믹 프로그래밍
- 단계별로 풀어보기
- 골드메탈
- 개인 프로젝트 - 런앤건
- 4월
- Today
- Total
기록 보관소
[Unity/유니티] 입문: 델타 타임[B8]~물체 움직여보기[B10] 본문
개요
유니티 입문/독학을 위해서 아래 링크의 골드메탈님의 영상들을 하루에 2~3개정도 보고, 각 영상별로 진행 상황 사진 또는 캡처를 올리고 배웠던 점을 요약해서 적는다.
https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2
유니티 강좌 기초 채널 Basic
유니티 개발을 처음 시작하시는 입문자 분들을 위한 기초 채널. [ 프로젝트 ] B00 ~ B12 (BE1) : 유니티 필수 기초 B13 ~ B19 (BE2) : 2D 플랫포머 B20 ~ B26 (BE3) : 2D 탑다운 대화형 RPG B27 ~ B37 (BE4) : 2D 종스크롤
www.youtube.com
이동 거리를 공평하게, 델타 타임[B8]
01.델타 타임이란?
- Time.deltaTime : 이전 프레임의 완료까지 걸린 시간(1프레임에 사용된 시간). 게임 진행을 주변 환경(컴퓨터 성능)에 영향을 받지 않게 하기 위해서 있다. 따라서 deltaTime 값은 프레임이 적으면 커지고, 프레임이 많으면 작아져서 같은 값을 출력한다.
02.Time.deltaTime 사용하는 방법
- Translate : 벡터에 곱하기. ex) transform.Translate(Vec * Time.deltaTime);
- Vector 함수 : 시간 매개변수에 곱하기. ex) Vector3.Lerp(Vec1, Vec2, T * Time.deltaTime);
실제와 같은 물체를 만들기[B9]
- 진행하기 전 세팅하기
참고로 이번 강의는 프로그래밍 없이 오브젝트의 Inspector 창의 컴포넌트들을 활용해서 진행되었다.
01.중력 적용하기
- RigidBody : 물리효과를 받기 위한 컴포넌트. 오브젝트에 추가하게되면 중력의 영향을 받는다.
02.충돌 영역 정하기
- Collider : 물리효과를 받기 위한 컴포넌트. 오브젝트의 충돌 범위를 설정한다. 즉, 충돌 기준은 보이는 오브젝트의 크기에 따르는것이 아니라, Collider에 따른다.
03.RigidBody 설정
- RigidBody의 구성
- Mass : 수치가 높을수록 충돌이 무거워진다. 오브젝트의 무게라고 보면 된다. 만약 위 예시 캡처에서 위의 오브젝트의 Mass 값을 1에서 1000으로 늘리면, 아래 오브젝트는 튕겨져 나가고 위 오브젝트는 바닥 가운데에 가만히 있게된다. 참고로 떨어지는 속도에는 영향을 주지 않는다.
- Use Gravity : 중력 사용 여부. 기본적으로 컴포넌트 추가시 체크되어 있다.
- Is Kinematic : 외부 물리 효과 무시 여부. 만약 위의 예시 캡처에서, 아래 오브젝트가 Is Kinematic이 켜져있다면, 아래 오브젝트는 움직이지 않고 위에서 떨어진 오브젝트만 튕겨져 나가게된다. Mass 값과는 상관없이 작용한다.
04.재질 만들기
- Material : 오브젝트의 표면 재질을 결정하는 컴포넌트
- 새로운 Material 만들기
-재질 편집은 새로 생성하고, 적용해야 가능하다. 적용하려면 Inspector창 아래쪽 'Add Component' 버튼 아래에 드래그&드랍하면 적용할 수 있다.
- Material의 Inspector창
-Metalic : 금속 재질 수치
-Smoothness : 빛 반사 수치
-이미지를 오브젝트에 씌우고 싶다면, Project에 해당 이미지를 넣고 재질의 Albedo 항목쪽 체크박스에 끌어 넣으면 된다.
-Tiling : 텍스쳐 반복 타일 개수. 참고로 소수도 입력가능하나 텍스쳐가 그만큼 잘려서 보인다.
-Emission : 텍스쳐 발광(밝기) 조절. 재질의 밝기가 밝아질뿐, 물리적으로 밝아지는 것은 아니다.
05.물리 재질 만들기
- Physic Material 만들기
- Physic Material : 탄성과 마찰을 다루는 물리적인 재질.
-Bounciness : 탄성력. 높을수록 많이 튀어오른다. 0~1까지 설정할 수 있다.
-Bounce Combine : 다음 탄성을 계산하는 방식. 처음 튀어오른 다음, 이후 튀어오르기를 어떻게할 것인지 정한다.
-Friction : 마찰력. 낮을수록 많이 미끄러진다. Static은 정지했을 때, Dynamic은 움직일 때의 마찰력이다.
-Friction Combine : 다음 마찰력을 계산하는 방식.
힘을 이용하여 물체 움직여보기[B10]
01.컴포넌트 가져오기
- 스크립트 만들기
-GetComponent<T>() : 자신의 T타입 컴포넌트를 가져온다. 참고로 2D에 3D 컴포넌트를 넣거나, 그 반대로 해도 작동 되지 않는다.
02.물체 속도 설정해서 움직이기
- 속력 바꾸기
-.velocity : 현재 이동속도. 위의 스크립트처럼 좌표 외에도 rigid.velocity = Vector3.right; 나 Vector3.left;로 사용하면 오른쪽이나 왼쪽으로 속도를 받고 움직일 수 있다. 참고로, 만약 RigidBody 관련 코드를 Update에 넣고싶다면, Update말고 FixedUpdate에 작성하는 것이 좋다고 한다.
03.물체에 힘을 가해서 움직이기
- 힘으로 밀기
-.AddForce(Vec) : Vec의 방향과 크기로 힘을 준다. Mass(무게)값이 클수록 움직이는데 더 많은 힘이 필요하다. ForceMode를 매개변수로 쓸 수 있다. 위 스크립트 파일에서 계속 스페이스바를 누르면, AddForce의 힘 방향으로 계속 속도 velocity가 증가하게 된다. (실행 캡처 콘솔 창 참고)
-ForceMode : 힘을 주는 방식. 가속과 무게를 반영한다. Acceleration, Force, Impurse, VelocityChange가 존재한다. 주로 Impurse를 많이 사용한다고 한다.
04.버튼 입력으로 움직이기
- 버튼 입력으로 공굴리기
05.회전력을 주어 움직이기
- 회전력
-.AddTorque(Vec) : Vec 방향을 축으로 회전력이 생긴다. Vec를 축으로 삼기때문에, 이동 방향에 주의해야한다.
'유니티 프로젝트 > 유니티 3D 입문 : 공 굴리기' 카테고리의 다른 글
[Unity/유니티] 입문: 기초만 활용한 3D 게임 만들기[BE1 1/2] (0) | 2022.01.08 |
---|---|
[Unity/유니티] 입문: 물리 충돌 이벤트[B11]~UGUI 기초[B12] (0) | 2022.01.07 |
[Unity/유니티] 입문: 키보드 마우스로 이동시켜보자[B6]~목표 지점으로 이동시키기[B7] (0) | 2022.01.05 |
[Unity/유니티] 입문: C# 프로그래밍 기초[B4] ~ 게임 오브젝트의 흐름[B5] (0) | 2022.01.04 |
[Unity/유니티] 입문: 설치[B0] ~ 콘솔창에 메시지 띄워보기[B3] (0) | 2022.01.03 |