본문 바로가기
카테고리 없음

Unity 행성 공전&자전 구현하기 1편 (물체기준 회전)

by dev_mac-_- 2017. 9. 17.

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)
}
 

cs

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 : 속도를 지정해주면된다.

자 이제 공전적용은 끝났다.



다음편에서는 자전을 포스팅하겠습니다.



댓글