Unity 행성 공전 구현하기
저번 달 연세대학교에서 우주기지 배경으로 VR만드는 워크숍에 참가한적이 있었다.
우리팀은 토성의 행성인 엔셀라두스를 바라보는 우주기지배경으로 하여 직접 탐사하는 VR을 만드는 것 하면서
토성은 좌전을 하고 엔셀라두스는 좌전과 공전하는 것을 구현하면서 이것저것 찾아보면서 미숙한 영어실력으로 찾아보면서
터득한 것을 블로그에 정리해보려한다.
먼저, 토성과 엔셀라두스 위성을 Scene뷰에서 적절히 배치해두었다.
[C#] 엔셀라두스 공전 Script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using UnityEngine; public class Rotate_Planet: MonoBehaviour { public GameObject Planet; //기준행성 (토성) public float speed; //회전 속도 private void Update() { OrbitAround(); } void OrbitAround() { transform.RotateAround(Planet.transform.position, Vector3.down, speed * Time.deltaTime); } // RotateAround(Vector3 point, Vector3 axis, float angle) } |
transform.RotateAround 함수를 찾아보았다.
관련정보 Unity Manual (https://docs.unity3d.com/kr/current/ScriptReference/Transform.RotateAround.html)
RotateAround(Vector3 point, Vector3 axis, float angle) 이라고 정의되어있다.
transform.rotate는 로컬기준이기 때문에 point에 중심점만 잡으면 된다.
point = 토성 Object 위치, axis(축)은 Vector3.down을 활용했다. angle은 각인데 각이 커질수록 각속도도 빨라지므로 어찌됬든 공전속도라고 보면 될 것같다.
* Vector3.down = 0.0f, -1.0f, 0.0f (y축 Unit Vector)
GameObject Planet : 기준점인 토성을 넣어주면된다.
float Speed : 속도를 지정해주면된다.
자 이제 공전적용은 끝났다.
다음편에서는 자전을 포스팅하겠습니다.
댓글