유니티 게임 프로젝트 1주차 작업 기록

박서영·2026년 2월 17일

1월 17일 작업 로그

✅ 결과

작업 상태

  • 캐릭터 애니메이션 작업 완료
  • 캐릭터 이동 및 동기화 작업 완료
  • 캐릭터 프리팹화 완료

커밋 기록

  • 아직 푸시는 안함 (회의 하면서 푸시 + 머지/풀리퀘 처리)


📄 세부사항

1. TMPro 글꼴 작업

일단은 후에 TextMeshPro로 통일할 거 생각하고, TMP로 닉네임 필드 만들고, 글꼴 TMP용 하나 만들어서 커밋

2. 캐릭터 애니메이션 작업

  • 상하좌우 이동용 클립
  • 정지상태(상하좌우 각각) 클립 생성

  • Blend Tree 사용해서 상태에 따라 애니메이션 전환되도록 변경

  • 파라미터로는 InputX, InputY, IsWalking 세 개 존재하고 각각 키보드 입력과 IsWalking은 움직이는 여부인 Bool값.
    • HasExitTime, TransitionTime 같이 애니메이션 전환 시 딜레이 없도록 작업

    • 전환 조건(Condition)으로는 IsWalking 작업.

3. 캐릭터 스크립트 작성 및 포톤 동기화

  • Start() 메소드. 즉 Initiate되면 포톤 서버에 있는 닉네임 가져와서 필드에 띄움.
    void Start()
        {
            if (photonView.Owner != null)
            {
                playerNameText.text = photonView.Owner.NickName;
                playerNameText.color = Color.black;
            }
        }
  • 우선 PhotonTransform, PhotonView 이런걸로 그냥 동기화시켜버리고 따로 동기화용 코드 작성은 하지 않음 (후에 더 부드럽게 하거나 하려면 코드작업하는게 좋을 수도 있다는 AI 평)
  • 포톤에서 동기화 처리해주기 때문에 그냥 자기자신(photonView.Owner 여부 확인해서 자기자신이면, 키보드 입력을 처리하도록 구조를 짬
    void Update()
        {
            if  (photonView.IsMine)
            {
                ProcessInput();
            }
        }
    
    void ProcessInput()
        {
            float y = Input.GetAxisRaw("Vertical");
            float x = Input.GetAxisRaw("Horizontal");
    
            Vector3 moveDir = new Vector3(x, y, 0).normalized;
    
            transform.position += moveDir * moveSpeed * Time.deltaTime;
            UpdateAnimation(moveDir);
    
        }
  • 스크립트는 옛날 버전으로 input 받는걸로 우선 작성했는데, 후에 새로운 버전으로 input 받는 식으로 변경해도 좋을 것 같음
  • 애니메이션 역시 자기자신이 input일 때의 코드만 작성하고, 다른 사람들 애니메이션은 포톤에서 처리하도록 그냥 컴포넌트에 Photon Animator만 추가함 (이 부분도 만약 추후에 부드럽게 하려면 코드 작성으로 조금 변화하는 걸 AI가 추천)
    void UpdateAnimation (Vector3 moveDir)
        {
            if (moveDir.magnitude > 0)
            {
                anim.SetBool("IsWalking", true);
                anim.SetFloat("InputX", moveDir.x);
                anim.SetFloat("InputY", moveDir.y);
            }
            else
            {
                anim.SetBool("IsWalking", false);
            }
        }

4. 기록용: 커밋/푸시 필요한 것

  • Photon 관련 에셋: 여러 명이 푸시하면 충돌나니까 한 명이 대표로 올리는 걸로
  • TMP관련 에셋: 이것도 한 명이 푸시해야 충돌 안남
  • Resources: 프리팹 폴더 관련 .meta 파일. 이것도 충돌 날 위험 있어서 일단 한 명이 푸시하면 나머지가 각자 로컬 브랜치에서 머지한 후에 풀리퀘스트 보내는 방식으로 진행하는게 좋을듯
  • 각자 커밋/푸시 전에 Stage/Unstage 할 내용 확실히 분리해서 올리면 안되는 파일들은 unstage해서 처리할 것 ⇒ 이거 처리하려면 깃크라켄 같은 GUI 사용하는게 좋긴함.

    회고
    게임 프로젝트 개발 1주차 작업로그..인데 당시에 계절 수업을 듣느라 바쁘기도해서 작은 분량의 업무만 맡았다. 이건 다른 팀원분들이 배려해주신 점.

    다른 주차와 달리 해당 주차에는 작업을 매일 조금씩 나눠하지 않고 하루, 이틀 정도에 몰아서 해서 로그가 짧다. 작업 로그 작성하는걸 2주차부터 제대로 해서 애초에 내용도 그닥 없지만... 1주차에 로그를 엄청 자세히 작성해준 팀원분이 계셔서-엄청 감사하게도-너무 좋은 것 같아 이후로는 좀 더 열심히 쓰게되었다...

    그리고 사실 각자 현황을 작업 로그 보면서 체크해서 작업로그를 개발 블로그가 아니라 노션에 작성하고 후에 한 번에 블로그로 옮기는식이 되었다... 노션에 작업로그를 적어서 공유하는건 의외로 좋은 것 같은..? 느낌.. 각자 코드나 파트를 볼 수 있어서 좋았다.

profile
이불 밖은 위험해.

0개의 댓글