공부/Unity

[Unity] 대관람차 돌리는 법 (Low poly Ferris Wheel)

굴러다니다니 2024. 12. 11. 21:59
728x90

예제를 위해 사용할 Low Poly Ferris Wheel 즉 low poly 대관람차 모델은

유니티 Asset store에서 "Low Poly Houses Free Pack"을 받아주시면 됩니다.

새로운 Scene을 하나 만들고,

3D Object Plane을 생성한 후, 애셋에서 Ferris Wheel을 Prefabs에서 찾아 넣어주었습니다.

Plane이 너무 작은 것 같아 Scale을 (5, 5, 5)로 키워줍니다

이 친구의 구조를 바꿔주기 위해 Unpack Completely로 풀어줍니다

 

대관람차는 전체가 한번에 돌아가고, 이 안의 작은 칸 같은 부분들도 함께 돌아가야합니다.

 

따라서 일단 큰 부분의 대관람차를 부모로, 이 친구의 자식들로 작은 칸 부분들을 넣어주겠습니다.

 

큰 철제인 Rotation Wheel 내부에 작은 칸들인 cabin 1~10을 넣어주었습니다.

이제 회전시키는 코드를 하나 작성하겠습니다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WheelRotate : MonoBehaviour
{
    [SerializeField] float RotateSpeed = 1.0f;
    void Update()
    {
        transform.Rotate(new Vector3(0, 0, 1) * Time.deltaTime * RotateSpeed);
    }
}

이 코드는 이 친구를 돌리는 코드입니다.

WheelRotate 스크립트를 만들어 위의 내용을 넣고, rotation wheel에 스크립트를 넣어줍니다.

 

잘 돌지만 안의 칸들도 그저 하염없이 같이 돌아갑니다.

어떻게 해야 저 칸들의 각도는 멀쩡할까요,,,?

 

joint 를 쓰려고도 해보고 animation clip으로 키값도 잡고 해봤지만 영 변변치않아서 그냥 칸들도 동시에 돌려줬습니다.

 

cabin들을 전부 잡아 Wheel Rotate를 추가해줍니다.

Rotate speed는 아까 rotation wheel에서 잡은 값에 마이너스만 붙여주세요.

 

저는 빠른 진행을 위해 10과 -10으로 바꾸겠습니다. 

 

대관람차 전체가 돌아가는 동시에, 안의 자식 개체들도 z방향으로 같은 속도로 반대로 돌아 외부에서 확인하면 제 각도를 유지하는 모습처럼 보입니다.

허허

이렇게 간단한 방법이 있었다니,,, 싶어서 글을 써봅니다.

 

저는 대관람차 탑승하는 부분을 다른 애셋에서 추가해 넣어주었고, cabin별로 콜라이더도 잡아주었으며

기존에 만들었던 플레이어가 탑승해 앉는 애니메이션으로 대관람차를 탑승할 수 있게 응용해 만들어주었습니다.

 

괜시리 어렵게 joint 쓰시지 마시고 코드로 돌려버리세요

그럼 안뇽

728x90