본문 바로가기
개발자가 되어보자..공부공부

C# 유니티 공부 19 - 3D 쿼터뷰 예제 (캐릭터 생성 및 동작, 키보드 더블 클릭 구현, 카메라 위치 고정)

by 묭묭이와소담이 2022. 12. 19.
반응형

* 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가 되어 최종 조건식 실행 가능. 

 

★ 더블 클릭 하여 앞구르기 할 때, 방향벡터를 고정하는 방법을 해결하지 못함.

 


 

 

 

 

반응형

댓글