유니티 일기

힘을 이용하여 물체 움직여보기(Rigidbody 컴포넌트)

mky 2025. 8. 25. 14:13

3d에 2d 컴포넌트 넣지말기. 그 반대도 동일

Rigidbody 관련 코드는 FixedUpdate에서 작성

velocity : 현재 이동 속도

AddForce(Vec) : Vec의 방향과 크기로 힘을 줌, Mass 무게 값이 클수록 움직이는데 더 많은 힘이 필요

- ForceMode: 힘을 주는 방식(가속, 무게 반영)

RigidBody를 사용한 이동은 보다 자연스러움

 

AddTorque(Vec) : Vec 방향을 축으로 회전력이 생김

 

using UnityEngine;

public class MyBall : MonoBehaviour
{
    Rigidbody rigid;
    void Start()
    {
        rigid = GetComponent<Rigidbody>();
        //rigid.linearVelocity = Vector3.left; // velocity : 현재 이동 속도
        //rigid.AddForce(Vector3.up * 1, ForceMode.Impulse);
    }

    void FixedUpdate() // Rigidbody 관련 코드는 FixedUpdate에서 작성
    {
        /*if (Input.GetButtonDown("Jump"))
        {
            rigid.AddForce(Vector3.up * 40, ForceMode.Impulse);
            Debug.Log(rigid.linearVelocity);
        }

        Vector3 vec = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
        rigid.AddForce(vec, ForceMode.Impulse);*/

        rigid.AddTorque(Vector3.forward);
    }
}