본문 바로가기
가상세계 산사VR

가상세계 산사VR, 물체 무한회전 스크립트

세컨드라이프에서 애용되었던 기술인데요. 산사에서도 가능하지만 통 샘플소스가 보이지 않아 하나 만들어 보았습니다.

스크립트는 아래와 같습니다.

using Sansar;
using Sansar.Script;
using Sansar.Simulation;
using System;

public class RotateSample : SceneObjectScript
{
    [Tooltip("속도")]
    [DefaultValue(1.0)]
    public double SpinSpeed;

    public override void Init()
    {   
        // 회전 쓰레드 호출
        StartCoroutine(RotateRoutine);
    }

    // 회원 쓰레드
    void RotateRoutine()
    {
        // 회전횟수(반바퀴 기준)
        int times = 0;
        Quaternion rotation;

        // 무한반복
        while (true)
        {
            // 혹시라도 움직이는 중이라면 동작을 멈출때까지 대기
            if (ObjectPrivate.Mover.IsMoving)
            {
                continue;
            }

            // 반바퀴를 2번 돈다. 한번에 한바퀴 회전하면 움직임이 이상해지기 때문
            for (int i = 0; i < 2; ++i)
            {
                // 회전횟수 카운트
                times++; if (times == 32767) times = 1;
                // 회원치에 해당하는 쿼터니온 각도 계산
                rotation = Quaternion.FromAngleAxis(Mathf.PiOverTwo * times, Vector.ObjectUp);
                // SpinSpeed 초동안 회전치만큼 일정속도로 회전
                WaitFor(ObjectPrivate.Mover.AddRotate, rotation, SpinSpeed, MoveMode.Linear);
            }
        }
    }
}

산사에 업로드해주신 다음 오브젝트에 스크립트를 적용하고 오브젝트 속성에서 Spin Speed 값을 조정해주시면 되는데요.
수치가 작을수록 속도가 빠릅니다.

필요하신 분에게 유용한 정보가 되셨기를 바라며~
감사합니다.

반응형