[unity]- 기초 입력 함수, 목표지점 이동,deltaTime
anyKeyDown : 아무 입력을 최초로 받을때 true를 가진다.
ex) if(Input.anyKeyDown) ~ : 아무 키나 눌렀을때 ~를 실행.
anyKey : 아무 입력을 받는 동안 true
ex) if(Input.anyKey) ~ : 아무 키를 누르는 동안 (꾹 누르기) ~를 실행
GetKey : 키보드 버튼 입력 받으면 true
ex) if( GetKey(KeyCode.Return)) ~ : Enter키를 누르는 동안 ~를 실행
Return 대신 A, W, Escape, LeftArrow 등을 쓸 수 있다.
얘도 Down, Up있음..
GetMouseButton : 마우스 버튼을 입력 받으면 true. 0은 좌클릭, 1은 우클릭이다.
ex) if( GetMouseButton(0)) ~: 좌클릭 누르는동안 ~ 실행
얘도 Down, Up있음...
GetButton : Input버튼 입력받으면 true.
ex) if( GetButton("Horizontal")) ~ : 왼쪽 화살표/오른쪽 화살표/a/d 누르면 true
Translate(벡터) : 벡터 값을 현재 위치에 더하는 함수.
Vector3 vec = new Vector3(0, 0.1f, 0); //벡터값
transform.Translate(vec);
이걸 Start()에 넣으면 처음 한번만 더해지고,
Update() 에 넣으면 0.1f씩 계속 더해진다.
GetAxis를 통해 직접 조종가능하다.
Vector3 vec = new Vector3(Input.GetAxis("Horizontal"),Input.GetAxis("Vertical"), 0); //벡터값
transform.Translate(vec);
-----
먼저 MoveTowards의 매개변수로는 현재위치,목표 위치, 속도가 주어진다.
등속 이동이다. 현재위치로부터 목표위치까지 주어진 속도로 이동한다.
Vector3 target = new Vector3(8, 1.5f, 0);
private void Update()
{
//1. MoveTowards
transform.position = Vector3.MoveTowards(transform.position, target, 1f);
//Vector3 velo = Vector3.zero;
//2. SmoothDamp
//transform.position = Vector3.SmoothDamp(transform.position, target, ref velo, 0.1f);
//3.Lerp 선형보간. 감속시간이 더 길다.
//transform.position = Vector3.Lerp(transform.position, target, 0.05f); //1이 최대이다.
//4. Slerp (구면 선형 보간. 호를 그리면서 이동) 포물선
//transform.position = Vector3.Slerp(transform.position, target, 0.05f);
}
-SmoothDamp는 부드러운 감속이동이다.
매개변수로는 현재위치, 목표위치, 참조속도, 속도가 주어진다.
맨 뒤의 속도가 더 작을수록 더 빨라진다.
빠르다가 목표지점으로 갈때 속도가 감속하여 부드럽게 간다.
ref는 참조접근으로 실시간으로 바뀌는 값을 적용할수있다.
-Lerp 는 선형보간으로 감속 시간이 smooth보다 더 길다.
매개변수는 현재위치,목표위치,속도로 주어진다.
맨뒤의 속도는 1이최대이고 클수록 빠르다.
-Slerp는 구면 선형 보간으로 호를 그리면서 이동한다. 포물선을 그리면서 도착한다.
매개변수는 위와 같다.
-deltaTime : 이전 프레임의 완료까지 걸린 시간. 값은 프레임이 적으면 크고, 프레임이 많으면 작다. Time.deltaTime으로 쓴다.
이것을 사용하는 이유를 간단하게 예시를 들어보면, 컴퓨터 사양이 좋은 A와 좋지않은 B가 온라인게임을 할때 만약 deltaTime을 사용하지 않으면, 레이싱 게임이라 쳤을때
30fps인 B와 60fps인 A가 같은 시간에 가는 거리가 달라진다.
사용방법1) Translate에서 벡터에 곱하기
ex) transform.Translate(vec*Time.deltaTime)
2) Vector함수에서 시간 매개변수에 곱하기
ex) Vector3.Lerp(vec1,vec2,T*Time.deltaTime)
-Rigidbody에서
mass의 수치가 높을수록 충돌이 무거워진다. 예를 들면 공이 위에서 내려오면서 아래 공을 치면 더 빠르게 튕겨나간다.
is Kinematic를 체크하 물리효과가 적용되지 않게된다.
-material 에서
tiling은 텍스쳐 반복 타일개수로 만약 x를2, y를2로 하면 같은 텍스쳐가 4개로 나눠진다.
emission은 발광효과이다.
- physics material 에서
bounce combine은 다음 탄성을 계산하는 방식이다. maximum을 하면 튕길수록 더 올라간다.
average를하면 점점 줄어든다.
friction은 마찰력으로 낮을수록 많이 미끄러진다.
static은 정지했을때, dynamic은 움직일때이다.
얼음처럼 미끄러지는거 하려면 friction을 다 0으로하고 combine은 minimum으로 해야한다.