일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 변경된 정보
- 게임
- php 홈디렉토리 변경방법
- 아이폰
- game
- 자바
- 포트(Port)
- 비행기 모드
- 아이패드
- 스랄 특성
- 안드로이드 Application Lifecycle
- unity
- 나지보 특성
- 집 정리
- 리눅스
- 에셋
- 기업의 행포
- End of Darkness
- 안드로이드
- 명령어
- tcp
- TCP 네트워크 방식의 연결
- 소캣(Socket)
- 컬렉션 프레임
- 어플
- tcp네트워크
- 벨팡
- 히오스
- Collection Framework
- 나지보
- Today
- Total
Do Something IT
[Unity3d] 케릭터 이동과 카메라도 같이 이동 및 회전 본문
출처: 바로가기
케릭터 이동
Vector3 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0,
Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= Time.fixedDeltaTime;
moveDirection *= mSpeed;
moveDirection += transform.position;
transform.position = moveDirection;
케릭터가 이동할 때 카메라도 같이 이동하게 하려면
가장 간단한 방법!
케릭터 자식으로 카메라는 넣는다. !
그 후 카메라는 케릭터의 이동과 방향에 맞게 설정해주면 된다.
Transform mCamera;
mCamera = transform.FindChild("Camera");
mCamera.transform.LookAt( transform.position );
mCamera.transform.RotateAround( transform.position, Vector3.up, transform.rotation.z );
Vector3 prePosition = moveDirection;
Quaternion toRotation = transform.rotation * Quaternion.LookRotation( prePosition ) ;
transform.rotation = Quaternion.Slerp( transform.rotation,
toRotation, Time.fixedDeltaTime );
현재 회전벡터(transform.rotaion)와 이동할 방향 (prePosition)의 회전 벡터를 곱함으로써
현재의 회전에서 이동해야할 회전방향을 구할 수 있다.
toRotation을 바로 회전벡터로 지정하면 케릭터는 회전이 된다.
하지만 너무 빠르다! 미치도록..뱅글뱅글 돌아버린다.
그렇기 때문에 현재 회전과 이동할 회전의 사이값으로 조금씩만 돌기 위하여 구 보간(Quaternion.Slerp)을 한다.
'Unity3D' 카테고리의 다른 글
게임 디자인 패턴 (0) | 2013.08.27 |
---|---|
[Unity3D] [System.Serializable] c# 인스펙터 나타내기 (0) | 2013.08.23 |
[unity3d]유니티, 최적화 정보 (0) | 2013.05.06 |
[Unity3d]오브젝트 간 충돌을 막고 싶을 때.. (0) | 2013.04.25 |
[unity3d]효과적인 C# 메모리 관리 기법 (0) | 2013.04.10 |