유니티에서의 물리엔진 이동 메소드 - Rigidbody

Published: Dec 23, 2020 by BeatChoi

유니티에서의 물리엔진을 활용한 이동 해보기

유니티에서 Rigidbody컴포넌트를 활용한 이동 메소드 및 변수들를 알아봅니다.

유니티3D 에디터에서

Velocity

프로젝트창에서 Velocity스크립트를 생성합니다.


<01. Physics 스크립트 생성>

Physics 스크립트를 열어서 다음과 같이 작성합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Velocity : MonoBehaviour
{
    Rigidbody rb; // Rigidbody형으로 rb 변수를 선언해줍니다.
    public float speed; //속도 변수를 선언합니다.  
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>(); //스크립트가 인스턴스화된 오브젝트의 Rigidbody 컴포넌트를 불러옵니다.
    }

    // Update is called once per frame
    void Update()
    {
        rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y, speed); // 오브젝트의 Rigidbody 접근하여 Velocity 변수를 사용합니다.
    }
}
  • Velocity 변수는 Rigidbody 컴포넌트가 있어야 호출을 할 수 있습니다.
  • Velocity 변수는 Rigidbody를 가진 물체에 주어진 속도를 부여합니다.

오브젝트 설정

에디터로 돌아와서 Physics스크립트를 Sphere오브젝트에 인스턴스화를 시킵니다.


<02. Physics 스크립트 인스턴스화>

Sphere 오브젝트의 인스펙터 창에서 Rigidbody컴포넌트를 생성합니다.


<03. Rigidbody 컴포넌트 추가>

Sphere 오브젝트에 인스턴스화 되어있는 Physics스크립트의 Speed값을 10으로 변경해줍니다.


<04. Speed 값 변경>

테스트

에디터 상단 플레이버튼을 눌러서 확인을 해봅니다.


<05. Sphere 오브젝트의 이동 확인>

위 결과에서 보았듯이 Velocity는 물체에 특정 속도값을 부여하여 일정한 속도로 움직일 수 있도록 합니다.

Addforce

이번엔 Physics스크립트에 다음과 같이 작성해 봅니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Velocity : MonoBehaviour
{
    Rigidbody rb;
    public float speed;
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        //rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y, speed);
        rb.AddForce(new Vector3(0, 0, speed*0.1f));
    }
}
  • Addforce 메소드는 Rigidbody를 가지고 있는 오브젝트에 일정한 힘을 지속적으로 부여합니다.
  • 메소드 안에 들어가는 인자는 Vector3 형식이기 때문에 방향과 힘 모두 부여할 수 있습니다.

테스트

Sphere오브젝트에 스크립트가 인스턴스화가 되어있는지 확인한 후 상단 Play 버튼을 눌러 확인해봅니다.


<06. Sphere 오브젝트의 이동 확인>

비교

Velocity

Velocity는 일정한 속도를 오브젝트에 부여하기 때문에 일정한 속도로 이동하게 됩니다.
하지만 Addforce메소드의 경우 일정한 을 오브젝트에 지속적으로 부여하기 때문에
속도는 일정하게 증가하는 것을 확인할 수 있습니다.

Latest Posts

Unity3D DOTS 개요 - DOTS 알아보기 2. World에 Entity 만들기
Unity3D DOTS 개요 - DOTS 알아보기 2. World에 Entity 만들기

Unity3D DOTS 개요 - DOTS 알아보기 1. ECS
Unity3D DOTS 개요 - DOTS 알아보기 1. ECS

DOTS 개요

DOTS는 Data Oriented Tech Stack의 약자로서 기본 상태에서 최적의 성능을 확보할 수 있는 전혀 다른 방식의 코드 작성 방법입니다. DOTS 방식으로 코드를 짠다면 멀티스레드 성능을 통해 더 많은 개체, 더 많은 이펙트, 더 나은 비주얼을 가진 복잡한 콘텐츠를 만들 수 있습니다.
DOTS는 Entity Component System, C# Job System, Burst Compiler 세 가지 요소로 이루어져 있습니다. 본 포스팅에서는 ECS에 대해서 알아봅니다.

유니티3D 설치
유니티3D 설치

유니티3D를 설치해봅니다.