Unity - 6. 물체 이동하기

Bloooooooooooooog..·2023년 4월 30일

이동 명령 입력

C#을 통해서 간단히 물체를 이동하는 스크립트를 짤 수 있다.

public class BallScript : MonoBehaviour
{
    Rigidbody rigid;
   	// Rigidbody클래스의 객체를 생성해준다.

    void Start()
    {

        rigid = GetComponent<Rigidbody>();
		// 컴포넌트 생성으로 초기화
        rigid.velocity = Vector3.right;
        // velocity에 Vector3로 값을 주면 간단히 오른쪽으로 이동하는 기능이 구현된다. 
    }


    void Update()
    {
        
    }
}

이 때 물리 기존에 지정한 물리 값을 토대로 물체가 이동하게 된다. (collider, material 등)


public class BallScript : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {

        rigid = GetComponent<Rigidbody>();


    }

    void FixedUpdate()
    {
        rigid.velocity = new Vector3(1, 4, -2);
        // 이처럼 Vector값을 줄 수도 있다.
    }
}

벡터 값을 지정해서 특정 이동을 계속해서 줄 수도 있다.

물체게 힘 가하기

Rigidbody 객체에 AddForce매소드를 지정하면 힘을 줄 수 있다.

public class BallScript : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {

        rigid = GetComponent<Rigidbody>();
        rigid.AddForce(Vector3.up * 5, ForceMode.Impulse);
        
        // ForceMode는 힘을 주는 방식이다.
        // ForceMode는 네가지 방식이 있다. 
        // 1) 연속적인 힘 + 무게에 영향 : ForceMode.Force
		// 2) 연속적인 힘 + 무게 무시 : ForceMode.Acceleration
        // 3) 순간적인 힘 + 무게에 영향 : ForceMode.Impulse
        // 4) 순간적인 힘 + 무게 무시 : ForceMode.VelocityChange

    }

    void FixedUpdate()
    {
    }
}

만약 사용자의 입력 값에 따라서 물체를 이동하려면 아래와 같이 코드를 짜면 된다.

public class BallScript : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {

        rigid = GetComponent<Rigidbody>();

    }


    void FixedUpdate()
    {
        if (Input.GetButtonDown("Jump"))
        {
            rigid.AddForce(Vector3.up * 25, ForceMode.Impulse);
        }
		
        // 백터 값을 사용자의 입력 키에 따라 받는다. x축,z축
        Vector3 vec = new Vector3(
        Input.GetAxisRaw("Horizontal"), 
        0, Input.GetAxisRaw("Vertical"));

		// 객체에 위에서 만든 백터 인스턴스를 넣어 사물 이동 구현!
        rigid.AddForce(vec, ForceMode.Impulse);
    }
}

회전력 가하기

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

    void FixedUpdate()
    {

        rigid.AddTorque(Vector3.back);

    }

이와 같이 작성하면 축을 잡아서 이동한다.

profile
공부와 일상

0개의 댓글