코드 기본기 다지기 - 2

2025. 9. 4. 00:07개발

 
 
 
 

 
안녕하세요. 가영이에요….
어제 혼자서 캠프 마치고, 공부하다가
뭘 잘못 딸깍 눌러버렸어요...
 
그리고 제가 하루종일 만들었던 게임이
날아가버려서 완전히 멘붕이 왔습니다.
 
어쩌지..하다가 그냥 새벽 1시까지 아예 처음부터 싹 다 만들기로 결정했는데요.
근데 그래도 만들었던 건 살리고 싶어서 튜터님께 어찌저찌 부탁했어요.
그러다 중간에 너무 길어져서,, 어쩔 수 없이 저 혼자 다 검색하고 찾아보면서 복구했습니다....
 
진짜 힘들었는데 그만큼 알아가는 것도 많았고,,,
근데 힘들고,,, 
 
블로그에 모자라서 유니티까지 다 날려먹은 어제오늘의 운세,,
다시는 이런 일 없어야지^^ ㅜㅜ
 
 
 
 
어쨌든 힘차게!!! 오늘의 공부일지를 마무리해보겠습니다.
 
레쯔고
 
 
 
 
 
 
 
 
 
 
 
 

연산, 변수, 조건문 사용해보기!

 
 

 
르탄이가 벽에 부딪칠 때마다 돌아오게 하려면?
 
오늘은 연산과 변수, 조건문을 집중적으로 공부해보았습니다.
화면에서 르탄이 캐릭터가 벽에 부딪칠 때마다 돌아오게 하고 싶은데요. 
이때 필요한게 "연산"입니다.
 
 
다시 용어를 복습해볼게요.
 
연산이란? 
계속해서 값을 변화시켜주는 것이죠.
 
우선, 르탄이가 오른 쪽 벽에 부딪칠 때마다 돌아오게 하려고 합니다.
 
 

 
 
화살표로 르탄이 캐릭터를 직접 움직여보면, x값이 변화하는 것을 확인할 수 있습니다.
그렇다면 우리는 코딩으로 transform 창에 보이는 position X의 값을 변화시켜주면 되겠죠?
 

 

계속해서 x의 값을 변화시켜주어야 하니까, 연산을 사용하면 됩니다!
그렇지만, 연산코드를 작성해야 하는 위치가 있습니다. 
 
 
코딩을 할 때는 아무 곳에나 막 입력하는게 아니더라구요...
겉보기에는 막 입력한 것 같아보여도 굉장히 복잡한 언어의 세계입니다.
대소문자도 잘 구분해주어야 하고, 올바른 코드를 알맞은 위치에 넣어주어야 합니다. 
 
그렇다면, 어느 위치에 연산코드를 넣어주어야 하는지 살펴봅시다.
 
 
 

 
 
위 이미지를 살펴봅시다. 
 
start () ->스타트 함수. 컴포넌트 옆에 소괄호가 붙어있는 걸 함수라고 한다.
 
//스타트 함수는 딱 한 번만 호출된다.
 
 
하지만 우리는 여러번 연산 되어야하죠?
그 밑에 void 함수를 살펴봅시다.
 


 
void update()
 
//프레임마다 한 번 호출된다.
 
->여러번 연산되어야 하니, 이 위치가 더 적절한 듯 합니다. 
트랜스폼 창에 있는 포지션의 함수를 바꿔주어야 하니, 이렇게 입력해보죠!
 
 
 


transform . position . x+=1;


  마침표 :
  어떤 컴포넌트의 어떤 값을 입력할 때 사용합니다.
  이 코드는 'transform이라는 컴포넌트에 position값을 입력하고 싶다.' 라는 뜻입니다.

  x+=1
  x에 1을 넣어준다. 
  라는 뜻입니다.

 
 
 
 

에러코드 발생!

 
 
앗! 그런데 에러코드가 발생했습니다....
 
Transform.position 은 변수가 아니므로 해당 변환 값의 수정이 안되기 때문이라네요..
 
그럼 어떻게 x에 값을 넣을까요?
 

transform.position + = new vector 3 (1f, 0, 0);

이렇게 고쳐주면 됩니다!
다만, 밑줄 친 부분을 매번 입력하기 번거롭다면
이렇게도 고칠 수 있습니다.

transform.position + = vector3. right

훨씬 간편해졌죠?

 
 
*여기서 새롭게 배운 것.
 
vector 3란?
유니티 트랜스폼 창에서 x,y,z를 담당하는 값입니다.
 
 
 
 


 
 
 
 
자,, 여기까지 코드를 입력했는데, 플레이 버튼을 눌러보니
르탄이가 너무 빨리 움직이네요? 조금만 천천히 움직이면 좋을텐데요...
 
멀티 플레이 게임에서는 사양이 좋은 기기를 갖고 있는 사람이 더 유리해질 수 있다고 해요.
그럼 게임이 불공정해지겠죠? 바로 코드를 수정해봅시다!
 
 

//frame을 수정하면 된다

voidstart()
Application.targetFrameRate = 60;​



알맞은 위치에 이 코드를 작성해주면 됩니다.
이 코드의 뜻은 '모든 기기들이 1초에 60프레임만 움직일 수 있게 해줘!'라는 함수입니다.




but, 여전히 르탄이가 너무 빨라서 조금만 더 늦추고 싶다면?

transform.position  + vector3.right 
                                              (1,0,0) 여기서 x값. 즉 1의 값을 어떻게 수정할까요?


바로바로 곱셈을 활용!

transform.position = vector3.right*0.05f;​

                        
이렇게 right 값에 0.05를 곱해버리면 됩니다.
(1,0,0) 

x값인 1에다가 0.05를 곱하면? 0.05가 됩니다.
y값과 z값은 어차피 0이니 어떤 숫자를 곱해도 0이 되겠죠.

이런 식으로 우리는 x의 값만 건드릴 수 있게 되는겁니다..

*여기서 소문자 f는 소수점을 의미합니다!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
이제 방향 바꿔주는 로직과 빗방울 충돌을 구현할건데요...
너무 길어지니
ㄷㅏ음 편에서...

'개발' 카테고리의 다른 글

케챱게임 만들기  (0) 2025.09.10
빗물받는 르탄이 프로젝트 - 2  (0) 2025.09.09
빗물받는 르탄이 프로젝트  (0) 2025.09.04
코드 기본기 다지기  (0) 2025.09.02
25년 9월 1일 첫 개발일지  (2) 2025.09.01