* 3D 필드 생성.
- Mesh Renderer를 비활성화 하면 시각적으로만 보이지 않을 뿐, 충돌 효과(Colider)는 유지된다.
- Tiling으로 Metrial 갯수를 행, 열로 증가시켜 적용 가능.
- FixedUpdate와 Update간의 근소한 프레임 차이로 플레이어와 벽의 물리충돌이 무시 될 때가 있는데, 그럴 때는 rigidbody의 collision Detection을 Continous로 변경해놓으면 좋음. (대신 CPU가 더 많이 사용됨.)
* 메인 카메라 좌표 고정
- 카메라 수동으로 첫 위치 조정.
- target(플레이어)과 offset(보정치) 변수를 Public으로 호출.
(public 값은 카메라의 위치를 적어주고, 플레이어를 드래그앤드롭해줌.)
- 카메라 포지션을 target의 포지션과 보정치를 더해준 상태로 만듦.
* 변수 생성 및 초기화
* 키 입력을 받는 함수.
* 이동 함수
- normalized는 단위 값을 1로 만들어주는 보정치 역할을 함.
- 간단한 조건식은 삼항연산자로 사용 가능.
(해당 식에서는 wDown이 입력되었을 때 속도를 0.3f를 곱하였고, 그렇지 않을때는 1f을 곱하였다.
* 점프 함수
- rigid.Addforce로 점프 구현.
- 무한 점프는 Isjump라는 bool값 변수를 생성하여, isjump=true 상태에서만 점프가 가능하도록 함.
Floor에 충돌했을 때, isjump=true로 초기화됨.
* 회전 함수
- 녹색 주석으로 달아 놓은 transform.LookAt 함수는 (매개변수)의 방향을 바라보며 플레이어가 회전하게 됨.
단, 90도로 끊어지듯이 회전하여 부드러운 느낌을 줄 수 없음.
- Quaternion.Slerp를 이용하여 부드러운 느낌을 줄 수 있음.
rigid.rotation에서 newRotation까지 rotateSpeed의 속도로 회전함.
* 앞구르기 함수
- Time.time - doublcClickedTime < interval 을 이용하여 더블클릭 구현.
1) 첫 조건 함수에서 Time.time - doubleClickedTime 은 무조건 Interval보다 클 수 밖에 없음.
(doubleClicked를 음수로 정의해놨고, interval은 양수로 정의해놨기 때문.)
2) else문으로 진행되어 isDodge는 false로 유지되고 doubleClickedTime이 Time.time과 같아짐.
3) 두 번째 조건 함수에서 Time.time - doubleClickedTime = 0 이 되어 if문 만족.
4) doubleClickedTime은 처음 값으로 되돌리고, isDodge=true가 되어 최종 조건식 실행 가능.
★ 더블 클릭 하여 앞구르기 할 때, 방향벡터를 고정하는 방법을 해결하지 못함.
댓글