IT 개발 노트/UNITY3D

[Component] Rigidbody

뺄칸 2025. 1. 17. 11:06

  • 물리 효과를 적용하는 컴포넌트입니다. (질량, 공기저항, 중력)
설정 구분 설명
Mass 질량
Drag 공기 저항 (높으면 이동이 빠르게 멈춤)
Angular Drag 회전 감속 (높으면 회전이 빠르게 멈춤)
Use Gravity 중력 사용 유무
  + 중력 설정 메뉴 : Edit → Project Settings → Physics 클릭
  + Inspector창에 Physics Manager 출력됩니다.
Is Kinematic 물리 효과 On/Off 기능 (체크하면 Off되어 물리효과가 적용되지 않습니다)
Interpolate 보관법 (프레임 출력을 부드럽게 처리하는 기법)
CollisionDetection 충돌 탐지 (기본 : Discrete)
 + 정밀한 계산이 필요한 총알은 Continuous Dynamic으로 설정합니다.
Constraints 이동이나 회전을 잠금이 필요할 때 사용하는 고정 옵션입니다.

 

물체(Object)를 이동하거나 회전시킬 때, 물리력 적용이 필요한 경우 사용합니다.

 

Drag (저항)

  • 저항 값을 0보다 크게 입력하면, 저항이 발생하여 멈추게 됩니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RegidbodyTest : Monobehaviour {

	private Rigidbody rigid;
    
    void Start() {
    	rigid = GetComponent<Rigidbody>();
    }
    
    void Update() {
    	if (Input.GetKey(KeyCode.W))
        {
        	// 물체 전진 이동 처리.
        	rigid.velocity = Vector3.forward;
        }
    }
}

 

Angular Drag (회전 저항)

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

public class rigidbodyTest : Monobehaviour {
	
    private Rigidbody rigid;
    
    void Start() {
    	rigid = GetComponent<Rigidbody>();
    }
    
    void Update() {
    	if (Input.GetKey(KeyCode.W))
        {
        	// 물체 회전 처리.
        	rigid = angularVelocity = Vector3.right;
        }
    }
}

 

MoveXXX, AddXXX

  • move, add로 시작하는 컨트롤 함수들을 제공합니다.
  • 자동완성으로 제공함수들을 확인할 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class rigidbodyTest : Monobehaviour {
	
    private Rigidbody rigid;
    private Vector3 rotation;
    
    void Start() {
    	rigid = GetComponent<Rigidbody>();
        
        rotation = this.transform.eulerAngles;
    }
    
    void Update() {
    	if (Input.GetKey(KeyCode.W))
        {
        	// 01 : 물체 순간 이동.
            rigid.MovePosition(transform.forward);
            
            // 02 : 물체 키입력중 회전하고 바로 멈추는 기능.
            rotation += newVector3(90, 0, 0) + Time.deltaTime;
            rigid.MoveRotation(Quaternion.Euler(rotation));
            
            // 03 : 회전 시키고, 저항력으로 멈추게 하기.
            rigid.AddTouque(Vector3.up);
            
            // 04 : 폭발 효과로 물체 움직이기.
            rigid.AddExplosionForce(10, this.transform.right, 10);
        }
    }
}

'IT 개발 노트 > UNITY3D' 카테고리의 다른 글

[Component] TRANSFORM  (0) 2025.01.16
[UNITY3D] 전처리기 지시어 설정  (1) 2024.11.27