유니티에서의 물리엔진 이동 메소드 - 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

LightshipAR SDK 활용하기 - Maps SDK의 활용
LightshipAR SDK 활용하기 - Maps SDK의 활용

ARDK Maps SDK

Lightship의 geofencing 기능을 구현할 수 있는 Maps SDK 활용법을 알아봅니다.

콘텐츠 개발

프로젝트 세팅

본 포스팅은 ARDK 3.9 버전, Maps SDK 0.4 버전을 기준으로 작성합니다. 이전 포스팅을 참조하여 SDK를 임포트 합니다.

Top Down Map

  1. 네이버 지도같은 일반적인 탑-다운 맵을 구현해 봅니다.

Unity3D에서의 UI - Rect Transform
Unity3D에서의 UI - Rect Transform

Unity UI RectTransform :: 개요

UI 객체들의 위치, 크기, 기준점 등등을 담당하는 Rect Transform에 대하여 알아봅니다.

Unity3D에서의 UI - UI의 구성
Unity3D에서의 UI - UI의 구성

Unity UI :: 개요

Unity UI는 게임 및 애플리케이션용 사용자 인터페이스를 개발하는 데 쓰이는 간단한 UI 툴킷입니다. Unity UI는 게임 오브젝트 기반 UI 시스템으로, 컴포넌트와 게임 뷰를 사용하여 사용자 인터페이스를 배열하고 위치와 스타일을 지정합니다. Unity UI는 Unity 에디터 내 사용자 인터페이스에 대해 사용할 수 없습니다.https://docs.unity3d.com/kr/2019.1/Manual/UIToolkits.html