Unity4
Unity 4일차
1. 오브젝트를 이동시키는 방법
오늘은 오브젝트를 현재 위치에서 목표 위치로 이동시키는 법들에 대해서 배울 것 입니다. 이를 사용하기 위해서 Update() 바깥에서 3차원 벡터 Vector3 target 객체를 생성해서 x, y, z 좌표를 정해주도록 한다.
1. MoveTowards
MoveTowards는 transform의 position에 Vecotr3의 MoveTowards를 넣어준다. 뒤에 나오는 값들은 현재 지점, 목표 지점, 속도를 지정해주는 것이다. 현재 지점은 transfornm.position, 목표 지점은 target, 속도는 2f 정도로 지정해준다. 속도에 비례하여 실제 속도가 빨라진다.
2. SmoothDamp
위와 똑같이 사용하고 현재 지점, 목표 지점은 동일하고 속도는 1f로 지정하였다. 1과는 달리 이것은 속도와 반비례하여 움직인다. 말 그대로 1번보다 smooth하게 움직인다. 이때, 우리는 앞에서 Vector3를 다시 만들어주었다. 그래서 Vector.up*50의 값을 주었는데 그 뜻은 y축으로 50을 곱한 만큼 목표 위치로 날아가는 것이다. 우리는 여러 테스트 과정을 위해서 이를 사용했으나 이렇게 하면 목표 지점의 의미가 없어서 잘 넣지 않는다. -> Vector3.zero를 사용한다!
3. Lerp
Lerp는 선형 보간이다. 말이 조금 어려운데 간단하게 말하자면은 시작점과 끝점이 있고 이를 이루는 가상의 호에서 직선 거리를 의미한다. Lerp를 보면 상당히 부드럽게 이동하는 것을 볼 수 있다. 이것 또한 속도에 비례한다.
4. SLerp
Slerp는 위와 달리 구면 선형 보간이다 위에가 호에서 직선의 길이라면 이것은 그 호를 따라 이동한다. Lerp와 같이 아주 부드러운 동작을 볼 수 있다.
주의:
- DeltaTime이란?
- 델타타임을 쓰는 이유는 사용자를 위함이다. 누군가는 컴퓨터 사양이 안 좋을수도 좋을수도 있다. 하지만 온라인게임에서 컴퓨터 사양으로 인해서 게임에 지장이 있는다면 안되는 일이다. 이를 방지하기 위해서 DeltaTime을 사용한다.
- 사용법은 translate은 벡터에 곱하고 (VecXTime.deltaTime), Vector는 시간 매개변수에 곱한다 (Vec1, Vec2, TXTime.deltaTime)
2. 오브젝트 관리하기
우리가 배웠던 것을 토대로 해서 이번에는 오브젝트를 만들고 Material을 넣어보는 등 실제처럼 한 번 화면 구성을 해봅시다. 여기서 Script는 쓰지 않습니다! 오직 오브젝트를 유니티에서 다루어 봅시다.
현재의 구성은 이렇다. 유니티는 컴포넌트 구성이기 때문에 두 개의 공과 아래의 바닥을 만든 후에, 서로 충돌을 하기 위해서 collider가 존재하고 물리적인 작용을 받기 위해서 두 공에 rigidbody가 추가 되어 있다.
그리고 우리는 이번엔 공의 색깔을 바꿔볼 것이다.
이곳에서 오른쪽 클릭 후에 create -> Material을 클릭하면 다음과 같이 새로운 New Material이 생성된다. 이름을 바꿔준 뒤에 속성을 살펴보자.
속성을 살펴보면 우선 Albedo로 색상 변경이 가능하다. 그리고 Metalic과 Smoothness를 이용해서 질감을 더 증가시킬 수 있다.
첫 번째는 Metalic 100, 두 번째는 Smoothness 100의 결과 사진이다.
Emission은 밝기라고 볼 수 있다. Tiling은 이 텍스처가 가로x세로로 얼마나 들어가는지 조절하는 공간이다. 2x2를 했으면 4개의 텍스처가 그 안을 구성한다.
- 물리 재질 만들기 아까와 똑같은 경로로 Physic Material을 선택해준다. 이를 선택하면 탄성과 마찰을 다룬다.
새로운게 생겼다! 이름또한 바꿔주도록 하자.
이를 Material을 끌어놓았던 것 처럼 끌어놓으면 Sphere Collider의 Material에 MyBall이 생겼다.
Bounciness는 탄성력으로 탄성력의 값을 주면 많이 튀어오른다. 값은 1보다 작은 값만 들어간다. Bounciness Combine은 다음 탄성을 계산한다. 그 전의 탄성을 보고 다음의 탄성을 계산해주는 방식이다.
Bounciness Combine을 Maximum으로 선택했더니 공이 아주 탄성이 좋아졌다. 높게 튀어오르는 현상을 볼 수 있다. 단, 무제한으로 높아지면서 튀고 있다.
Static Friction은 일반 마찰력이고 Dynamic Friction은 움직일 때의 마찰력이다. Friction Combine은 다음 마찰력을 계산하는 방식이다. 마찰력을 없애고 이를 중간값으로 잡아놓으면 빙판길 같은 효과를 줄 수 있다.
Friction 합산은 최소로 Bounciness은 합산은 최대로 해야 깔끔한 물리현상이 나온다!