05-19 09:34
Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

(주) 망나니 힘집

[UNITY] 오브젝트를 이동 본문

유니티 최고/Unity

[UNITY] 오브젝트를 이동

군포망나니 2022. 1. 18. 15:30

<이번 시간은 스크립트내에서 컴포넌트를 가져와서 오브젝트를 이동시키는 방법에 대해서 알아보겠습니다. >

이 글은 골드메탈님 수업을 듣고 작성하였습니다. 

 

* 컴포넌트를 스크립트로 가져오는 방법 *

public class NewBehaviourScript : MonoBehaviour
{
    //컴포넌트를 가져오는 방식
    //선언
    Rigidbody rigid;

    void Start()
    {
        //초기화
        rigid = GetComponent<Rigidbody>();      
        

    }
}

 

* 속력 올리기 *

//velocity : 현재 이동 속도

public class NewBehaviourScript : MonoBehaviour
{
    //컴포넌트를 가져오는 방식
    //선언
    Rigidbody rigid;

    void Start()
    {
        //초기화
        rigid = GetComponent<Rigidbody>();
        rigid.velocity = Vector3.right;
        // >>> 오브젝트가 오른쪽으로 이동한다. 
        // left : 왼쪽으로 이동. 

       // forward , back

        rigid.velocity = new Vector3(2, 4, -1);
        //>>> 4만큼 점프를 해서 이동한다. 
    }

    void Update()
    {
        rigid.velocity = new Vector3(2, 4, -1);
        //업데이트에서 실행하면 무한으로 올라간다.       
    }

    void FIxedUpdate()
    {
        rigid.velocity = new Vector3(2, 4, -1);
        //유니티에선 Rigidbody 관련 코드는 FixedUpdate에서 작성하는 것을 권장한다. ☆       
    }
}

 

* 힘으로 오브젝트를 미는 방법 *

public class NewBehaviourScript : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {
        rigid = GetComponent<Rigidbody>();
        rigid.AddForce(Vector3.up * 50, ForceMode.Impulse);
        //AddForce : Vec 의 방향과 크기로 힘을 준다. 
        // 보통 캐릭터가 점프를 뛸 때 사용한다. 
        //ForceMode : 힘을 주는 방식(가속, 무게 반영)
        //Impulse는 mass 영향을 받기 때문에 조절 해주어야 한다.
        //>>> 오브젝트가 위로 뜬다. 
    }
}

 

* 버튼 입력으로 오브젝트 이동 *

public class NewBehaviourScript : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {
        rigid = GetComponent<Rigidbody>();
        if(Input.GetButtonDown("Jump"))
        {
            rigid.AddForce(Vector3.up * 50, ForceMode.Impulse);
            //스페이스바를 누르면 오브젝트가 위로 이동한다. 
             
            Debug.Log(rigid.velocity);
            //AddForce는 가속도 부여 , 계속 속도 증가한다.       
        }

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

        //>>> 누르는 값만큼 x, z 축에 따라 움직인다. 
        //RigidBody 이동은 훨씬 자연스럽다. 
    }
}

 

+ 쓰는 방식 추가 

float h = Input.GetAxisRaw("Horixontal");

float v = Input.GetAxisRaw("Vertical")

 

rigid.AddForce(new Vector3(h, 0 , v ),ForceMode.Impulse)

 

*오브젝트에 회전력을 주는 방법*

public class NewBehaviourScript : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {
        rigid = GetComponent<Rigidbody>();

        rigid.AddTorque(Vector3.up);
        //AddTorque(Vec) : Vec 방향을 축으로 회전력이 생긴다. 
        //>>> y축을 기준으로 오브젝트가 회전한다. 

        
    }
}

 

<이번 시간은 스크립트내에서 컴포넌트를 가져와서 오브젝트를 이동시키는 방법에 대해서 알아보았습니다. >

<다음 물리 충돌 이벤트와 트리거 이벤트에 대해서 알아보겠습니다. >