본문 바로가기

스파르타코딩 공부내용 정리/유니티

1주차 4강 캐릭터 움직이기

Assets > Create > Folder에서

Script를 생성

C# → rtan 생성

C#은 게임 개발에서만 주로 쓰이고 있다.

 

캐릭터 움직이기

void Update()
{
    transform.position += new Vector3(0.05f, 0, 0);
}

 

start -> 생성 되자마자 일어남

update -> 매 프레임마다 일어남

 

여기서

transform.position은 transform의 position을 수정하겠다는 의미이다.

위 코드는 지금 포지션에 위 값을 더해라는 의미다.

C#에서는 소수는 f로 나타낸다.

 

760보다 클 때 다른 방향 보게 하기

float direction = 0.05f;

// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{
    if (transform.position.x > 2.8f)
    {
        direction = -0.05f;
    }
    transform.position += new Vector3(direction, 0, 0);
}

 

벽을 만나면 돌아가도록 코드를 수정

// Update is called once per frame
void Update()
{
    if (transform.position.x > 2.8f)
    {
        direction = -0.05f;
    }
    if (transform.position.x < -2.8f)
    {
    	direction = +0.05f;
    }
    transform.position += new Vector3(direction, 0, 0);
}

 

Debug.log로 position알아보기

Debug.Log(transform.position.x);
transform.localScale = new Vector3(-1, 1, 1);

이를 이용해 좌우반전되도록 수정하면

// Update is called once per frame
void Update()
{
    if (transform.position.x > 2.8f)
    {
        direction = -0.05f;
        transform.localScale = new Vector3(-1, 1, 1);
    }
    if (transform.position.x < -2.8f)
    {
    	direction = +0.05f;
        transform.localScale = new Vector3(1, 1, 1);
    }
    transform.position += new Vector3(direction, 0, 0);
}

 

마우스 이벤트를 받아 좌우반전하기

if (Input.GetMouseButtonDown(0))
{
    toward *= -1;
    direction *= -1;
}

바로 넣으면 toward에 빨간줄이 생기는데 이는 아직 toward를 정의하지 않았기 때문이다.

// Update is called once per frame
void Update()
{
	if (Input.GetMouseButtonDown(0))
    {
        toward *= -1;
        direction *= -1;
    }
    if (transform.position.x > 2.8f)
    {
        direction = -0.05f;
        toward = -1.0f
    }
    if (transform.position.x < -2.8f)
    {
    	direction = +0.05f;
        toward = 1.0f
    }
    transform.localScale = new Vector3(toward, 1, 1);
    transform.position += new Vector3(direction, 0, 0);
}