본문 바로가기

UDON 강좌

UDON U# 강좌 (2) : 오브젝트 움직이기

 

이번 강좌에서는 오브젝트를 원하는 위치로 움직여보고 계속 회전시켜 보겠습니다.

 

U#은 C# 기반이기 때문에 기존에 유니티 개발자분들은 쉽게 할 수 있습니다.

 

"이 강좌는 강좌 이해에 필요한 정도만 프로그래밍에 대해 설명하고 있습니다.

프로그래밍에 대한 설명이 다소 부족할수 있으니 C# 기초를 조금 공부하시면 스크립트 제작에 많이 도움이 될 수 있습니다.

그리고 아래 강좌가 이해가 안되면 가장 아래에 최종 스크립트를 참고해주세요"

 

일단 스크립트를 작성하기 위해 1강에서 알려드렸던 대로 큐브 오브젝트를 하나 만들고 거기에 스크립트를 하나 만들어줍니다.

 

 

먼저 유니티에서 이동이나 회전을 시키기 위해서

스크립트에서 'Transform 컴포넌트'를 불러옵니다.

Transform의 컴포넌트의 정보를 불러와 저장하기 위해 변수(저장공간 같은것)를 만들어줍니다.
그리고 Start 함수(스크립트가 시작될때 가장 먼저 실행되는 부분) 안에 위 사진에 나와 있는 코드처럼 Transform의 정보를 담아줍니다.

 

그리고 회전, 이동 속도를 정해주기 위해

위 사진과 같이 변수를 만듭니다. (R=회전, P=이동)

변수 이름은 마음대로 바꿔도 됩니다.

 

변수 앞에 public은 공개변수로서 굳이 스크립트를 열어서 값을 바꾸지 않고 유니티에서 값을 정해주거나 다른 스크립트에서 저 변수의 값을 바꿀수 있게 만들어줍니다 (private는 그 반대)
그리고 float는 소수(0.1, 10.5와같은 수), int는 정수(1,2,3,4..) Vector3는 XYZ 입니다

그리고 FixedUpdate라는 함수를 만들어서 회전 각도를 지속적으로 바꿔주고 위치 좌표를 천천히 이동시켜 줍니다.

(FixedUpdate는 일정시간 간격을 두고 지속적으로 발동됩니다)

이제 이 스크립트를 저장하고 유니티에서 값을 입력해준뒤 컴파일 버튼을 눌러줍니다.

이제 게임 재생버튼을 눌러보면

오브젝트가 돌아가는 것을 확인할 수 있습니다

최종스크립트입니다.

New.cs
0.00MB

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class <스크립트 파일이름 그대로 적어주세요> : UdonSharpBehaviour
{
    //회전, 이동 할 속도
    public float Rspeed = 100.0f;
    public float Pspeed = 1.0f;
    //이동할 좌표
    public Vector3 targetPosition = new Vector3(0, 0, 0);
    //유니티 Transform 컴포넌트 정보
    private Transform tf;
    void Start()
    {
        tf = gameObject.transform;
    }
    void FixedUpdate()
    {
        // 회전축 x:0, y:1, z:1 만큼 지속적으로 돌아감 
        tf.Rotate(new Vector3(0,1,1), Time.deltaTime * Rspeed);

        // 좌표
        tf.position = Vector3.MoveTowards(tf.position, targetPosition, Time.deltaTime * Pspeed);
    }
}