유니티/[길건너 친구들] 클론코딩

[Unity] #2 플레이어 이동 바운더리 제한

da_log 2023. 1. 3. 14:46

Feat 바운더리 추가

플레이어가 화면 밖으로 넘어가지 않도록

일정 바운더리를 제한해 주었다.

 

 

boundary라는 변수를 선언해서 이동 범위를 변수로 관리할 수 있도록 했다.

 

그리고 boundary를 넘어가게 되면 위치값을 바운더리 경계선으로 설정을 해서

경계선을 넘어서 이동하지 못하도록 했다.

 

처음에 x값을 제한하기 위해서 

transform.position.x = 10.0f 라고 작성을 했는데 

 'Transform.position'은(는) 변수가 아니므로 해당 반환 값을 수정할 수 없습니다. 

라는 오류 메시지가 뜨게 된다.

 

이 오류를 수정하기 위해서는

transform.position.x = new Vector3() 로 작성을 해주어야 한다.

 

C#에서 구조체와 프로퍼티를 다루기 때문에 생기는 문제라는데

도저히 이해가 안되서 일단 패스....

 

public float boundary = 10.0f;

// Update is called once per frame
void Update()
{
    Move();
    
     //Add boundary
    if (transform.position.x <= -boundary)
    {
        transform.position = new Vector3(-boundary, transform.position.y, transform.position.z);
    }
    else if (transform.position.x >= boundary)
    {
        transform.position = new Vector3(boundary, transform.position.y, transform.position.z);
    }
}

 

 

참고: C#의 구조체에 대한 설명 

 

C# 구조체 프로퍼티, 구조체 인덱서

구조체의 특징 초기화(할당), 리턴 등의 동작을 통해 값을 전달할 경우, 구조체가 통째로 복제된다.

rito15.github.io

C#을 조금 더 공부하고 나서 보면 좋을 것 같은 구조체에 대한 글