본문 바로가기

Unity

유니티 힘을 이용하여 물체 움직여보기

코드 흐름은 선언 < 초기화 < 호출

 

선언

RigidBody 변수명;

 

초기화

변수명 = GetComponent<T>(); // 자신의 T타입 컴포넌트를 가져옴.

 

호출

1. 속력 바꾸기

> velocity : 현재 이동 속도

 

2. 힘 가하기

> AddForce(Vec, ForceMode) : Vec의 방향과 크기로 힘을 줌, ForceMode는 힘을 주는 방식(가속, 무게 반영)을 의미함.

이때, Mass 무게 값이 클수록 움직이는데 더 많은 힘이 필요하다.

AddForce의 힘 방향으로 계속 속도 velocity가 증가.

 

3. 회전력

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

이때, Vec를 축으로 삼기 때문에 이동 방향에 주의!

 

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

public class MyBall : MonoBehaviour
{
    //선언
    Rigidbody rigid;
   
    void Start()
    {
        //초기화
        rigid = GetComponent<Rigidbody>();
    }

    void Update()
    {
        //1. 속력 바꾸기
        rigid.velocity = new Vector3(2, 4, 3);

        //2. 힘가하기
        if (Input.GetButtonDown("Jump"))
        {
            rigid.AddForce(Vector3.up * 5, ForceMode.Impulse);
            Debug.Log(rigid.velocity);
        }

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

        //3. 회전력
        rigid.AddTorque(Vector3.back);



    }
}