Coding/C# (Unity)

[Unity C#] 게임 오브젝트 위치 변경 방법 - Position

잇뉴얼 2022. 5. 20. 22:32
728x90
반응형

[Unity C#] 게임 오브젝트 위치 변경 방법 - Position


게임상에 오브젝트들이 위치가 고정되어있을수 있지만, 오브젝트들이 특정 구간을 반복적으로 움직일 수도 있습니다. 이번 포스트에서 'C# Script'를 이용한 오브젝트들을 움직이게 하는 방법에 대해 다뤄보겠습니다.


transform.Position


// 오브젝트 위치 지정 코드
transform.position = new Vector3(float x,float y,float z);

일단 위의 코드를 먼저 알아뒤야 합니다. 해당 오브젝트의 위치를 지정해줄 수 있는 코드인데요. 

Unity 프로그램 왼쪽탭 'Hierarchy'에서 오브젝트를 선택하면, 오른쪽 'Inspector'영역에 'Transform' 컴포지션이 있습니다. 여기서도 Position을 변경할 수 있지만, 위치만 변경이 가능하기에, 'C# Script'를 만들어서 따로 작성을 해줘야 합니다.

// Update is called once per frame
void Update()
    {
        transform.position = new Vector3(0, 6.26, -14.62);
    }

'Inspector'에서 설정한 포지션 'C#'코드로 작성을 하면 다음과 같습니다. 'Vector3(float x, float y, float z)'에 값을 대입하면 되는데, 이렇게 설정을 하게되면, 해당 좌표에 고정이 되는 방식입니다. 이 값을 변화를 줄 수 있도록 코드를 짜야됩니다.

// Update is called once per frame
    void Update()
    {
    	float MoveX = 0.1f;
        float newXPosition = transform.position.x + MoveX;
        transform.position = new Vector3(newXPosition, 6.26, -14.62);
    }

오브젝트의 X축의 값만 변화를 주고 Y, Z축의 값은 변화를 주지 않도록 코드를 작성했습니다. 'MoveX'라는 변수에 실수 '0.1f'값을 선언했으며, 프래임당 실수값 '0.1'씩 변화를 주기 위해서 변수 'newXPosition'에 현재 X축의 값(transform.position.x)에 'MoveX'변수를 더하도록 선언한 다음, Vector3의 X축에 'newXPosition'의 값을 넣었습니다.

허나 이렇게 했을경우, X축의 값이 계속 증가만해서, 게임화면에서 벗어날 수 있으므로, 조건문(if문)을 사용하여, 특정위치를 왔다갔다 하도록 코드를 변경했습니다.

// Update is called once per frame
    void Update()
    {
        float newXPosition = transform.position.x + MoveX;
        transform.position = new Vector3(newXPosition, 6.26, -14.62);
        if (transform.position.x > 3.5){
            MoveX = -0.1f;
        }
        else if (transform.position.x < -3.5) {
            MoveX = 0.1f;
        }
    }

'if ~ else if'문을 사용하여서, 'X축'의 값이 3.5를 초과할 경우 'MoveX'의 값을 '-0.1f'로 변경해서 좌측으로 이동하도록 했으며, 'X축'의 값이 -3.5 미만이 될 경우, 'MoveX'의 값을 '0.1f'로 변경하여, 우측으로 이동하도록 하였습니다. 코드 작성을 완료 한 다음, 해당 오브젝트에 'Add Component'혹은 드레그를 통해 'C# Script'를 추가해주었습니다.

'MoveX'의 값이 너무 커서, 이동이 너무 빠르게 설정되었네요;; 'MoveX = 0.01f'로 값을 수정해주면 기둥이 천천히 움직이는걸 확인 할 수 있습니다. 이번 포스트에서는 오브젝트 움직이는 방법에 대해 알아보았습니다.

반응형