250114

凡愚·2025년 1월 14일

개발 일지

목록 보기
51/350

✅ 오늘 한 일


  • Random Study : Project 3ID
  • 헤드 퍼스트 디자인 패턴 읽기 : 1장


📝 배운 것들


🏷️ aseprite 사용법

https://www.youtube.com/watch?v=u8qfutdEm_A

  • 검은색 같은 원색은 피한다
  • 그림자 넣을 때 색 위치도 살짝 변경해주면 좋다
  • 가상의 햇빛 반대쪽 면을 그림자 색으로 덮어 씌우기
  • 프로그램 우측 하단 + 버튼으로 프레임 추가 가능
  • 선택 후 살짝 이동시켜서 몸이 흔들리는 효과 낼 수 있다
  • Edit > FX > Outline로 외곽선 넣을 수 있다. 단축키는 Shift+O. 보통은 Square 외곽선 쓴다.
  • 외곽선에도 가상의 햇빛을 받은 듯한 색상을 추가하면 디테일 업.
  • 중간중간 햇빛 안 받은 색깔도 찍어주면 디테일 업.
  • File > Export Sprite Sheet로 스프라이트 시트로 변환 가능. 보통 spacing 1 정도 준다. png 파일로 저장하면 됨.
  • 웹에서 픽셀 아트를 보여주고 싶을 땐 Sprite > Sprite Size에서 크기를 키우고 저장한다.


🎮 Random Study


Project 3IP

    void Update()
    {
        GatherInput();
        Move();
    }

    void FixedUpdate()
    {
        if (input_jump)
        {
            rb.AddForce(Vector3.up * 5, ForceMode.Impulse);
            input_jump = false;
        }
    }

    void GatherInput()
    {
        input_move = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;

        if (Input.GetButtonDown("Jump"))
        {
            input_jump = true;
        }
    }

    void Move()
    {
        Vector3 isometricDirection = new Vector3(input_move.x, 0, input_move.z);
        isometricDirection = Quaternion.Euler(0, 70, 0) * isometricDirection;
        rb.MovePosition(transform.position + isometricDirection * speed * Time.fixedDeltaTime);
    }
  • 플레이어 컨트롤은 간단하게 리지드바디로 제어

  • orthographic 카메라에 dof가 안됨
  • 방법 : 쉐이더에서 depth texture를 이용하라?
  • 개별 머테리얼 말고 카메라에 어떻게 쉐이더 입힘?
  • https://www.youtube.com/watch?v=oLyv3NSpPeg 커스텀 포스트 프로세스 이용하면 될 것 같긴 한데
  • 셰이더 코드는 까막눈이라 일단 보류
  • 어차피 배우려고 했던 거라 굳이 지금 gpt랑 비비면서 비효율적으로 할 필요 없


📖 헤드 퍼스트 디자인 패턴


Chapter 01 | 디자인 패턴의 세계로 떠나기

부모 클래스와 자식 클래스 두 분류로만 나눠버리면,
나중에 자식이 많아졌을 때 행동을 바꾸기가 어렵다.
override나 interface를 사용하면 구현을 조금 바꿀 때 일일이 찾아가서 다 바꿔줘야 하기 때문이다.

디자인 원칙
애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리하여 캡슐화한다.

클래스(인터페이스)에서 변화하는 행동들을 골라서 변화의 종류들을 인터페이스로 묶어버리고,
클래스에선 그 인터페이스 아래에 있는 행동의 클래스들을 가져오면 코드가 좀 더 유연해진다.

디자인 원칙
상속보다는 구성을 활용한다.

구성(composition) : 두 클래스를 합치는 것



0개의 댓글