Unity에서 # 나침반 같은 이동 방법 구현
기사 내용
Unity에서 # 나침반 같은 이동 방법을 구현하는 방법에 대해
구체적으로는
이런 녀석을 구현할 수 있으면 OK 같은 느낌입니다.
그건 그렇고, 다음과 같이 작동합니다.
UnityChan 움직이고 있습니다 ... 여가이므로 Qitta 나중에 쓰자 피 c. 라고 r. 코 m/엔 lQ기 X3기 — 타이타로 (@kotaro_sakata)
필자에 대해서
KNCT 학생. 동급생에서 위대한 September 17, 2019에서 영감을 받아 시험에 써 보았습니다.
솔직히 첫 투고로 게다가 여가 시간에 써 보았으므로, 세세한 곳은 많게 봐 주세요.
어디까지나 어떤 코드 썼을까라는 기사이므로, 상당히 생략하고 있는 곳은 많습니다.
하지만 코드 잘못하거나 뭔가 더 좋은 방법이 있다면 알려주세요.
환경
Unity 2019.1.2f1
JetBrains Rider 2019.1.2
자산
Standard Assets (CrossPlatformInput 당 여러 가지 사용)
캐릭터 중심으로 카메라 회전
우선 간단한 분들로부터 합니다. 보통으로 생각하면 이쪽도 상당히 어려울 것 같은 느낌은 합니다만, 거기는 Unity입니다. 그런 함수를 사용할 수 있습니다
public void RotateAround (Vector3 point, Vector3 axis, float angle);
요점은 제 1 인수에 중심의 좌표, 제 2 인수에 회전시키고 싶은 축, 제 3 인수에 각도를 대입하는 함수입니다.
이렇게 하면 원하는 좌표를 중심으로 회전할 수 있습니다.
public Vector3 position;
void LateUpdate()
{
transform.RotateAround(position,Vector3.up,CrossPlatformInputManager.GetAxis("Mouse X")*5);
}
이 코드를 카메라에 붙입니다. position에는 Unity의 에디터에서 회전의 중심이 되는 캐릭터를 넣어 둡시다.
Unity 에디터 측에서는 CrossPlatformInput 안에 있는 CarTiltControls를 사용합시다. CarTiltControls 안에 있는 LookUpAndDownTouchpad를 이용합니다.
@ 군조
CarTiltControls에 연결된 Touch Pad의 Control Style을 Swipe로 설정하면 카메라가 스와이프로 회전할 수 있습니다.
카메라를 스와이프하여 회전하는 방법은 이상입니다.
화면 하단의 조이 스택을 조작한 방향으로 캐릭터를 달립니다.
이 구현은 초보자의 나에게는 느렸다.
조이스틱을 조작한 방향으로 달릴 때 두 가지 고려해야 할 사항이 있습니다.
- 카메라도 회전하고 있으므로 카메라의 각도를 더한다.
- 각도를 구하는 함수 Vector3.Angle()는 각도는 알지만 회전한 방향은 모른다.
이 니 포인트를 근거로 한 다음 구현 된 코드는 다음과 같습니다
void Update()
{
Horizontal = CrossPlatformInputManager.GetAxis("Horizontal");
Vertical = CrossPlatformInputManager.GetAxis("Vertical");
vec3 = new Vector3(Horizontal,0,Vertical);//ジョイステックの方向ベクトル作成
forward = new Vector3(0,0,1);//基準となる方向ベクトル
cameraforward = obj.transform.forward.normalized;//カメラの方向ベクトル
angle2 = Vector3.Angle(forward, cameraforward);//カメラと基準ベクトルの角度を求める
if (forward1.x < 0) angle2 *= -1;//左右の調整
if(vec3.magnitude>1) vec3=vec3.normalized;//ベクトルの正規化
float angle = Vector3.Angle (vec3, forward);//ジョイスティックと基準ベクトルの角度を求める
if (vec3.x < 0) angle *= -1;//左右の調整
transform.rotation = Quaternion.AngleAxis(angle+angle2,transform.up);//キャラの回転
transform.Translate(0,0,vec3.magnitude*Time.deltaTime*5);//移動
}
코멘트를 붙이는 법이 잘못되었습니다.
12시 방향에 대해 카메라와 조이스틱이 얼마나 회전하고 있는지를 계산하여 더합니다.
MobileSingleStickControl 안에 있는 MobileJoystick를 이용하고 있습니다.
끝
끝입니다...
여가요...
여름방학을 만끽할 수 없었습니다...
Reference
이 문제에 관하여(Unity에서 # 나침반 같은 이동 방법 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kotarosakata/items/b635b4c2339431257bd8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)