ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내일배움캠프 26일차 TIL - 유니티 입문 팀 프로젝트 5
    TIL/Unity 2024. 5. 22. 22:27

     

    [학습요약]

    팀 프로젝트 작업물을 마무리하고, 발표를 준비했다. 그리고 수준별 특강도 2시간 진행됐다.

    [학습내용]

    수준별 특강

     

    Coroutine

    • 메서드를 끝까지 실행시키지 않고 중간에 제어하고자 할 때 사용할 수 있다.
    • yield return 시에 제어권을 유니티에게 넘겨주고, 반환 받으면 그 이후를 진행한다.
    • 비동기처럼 보이지만 비동기는 아니다(스레드와 다르다).
    • 실행시킨 주체가 비활성화 되거나 파괴될 경우 코루틴도 작동을 멈춘다.

    Box Collider 2D

    Box Collider 2D

    • Material: 시각적이 아닌 물리적인 머터리얼
    • Is Trigger: 물리적 충돌 없이 충돌을 구현할 것인지
    • Used By Effecter: Platform Effector 등을 사용할 것인지
    • Used By Composite: 여러 콜라이더를 하나처럼 사용할지 (박스 콜라이더만 가능)
    • Auto Tiling: 늘어났을 때 자동으로 타일링
    • Edge Radius: 모서리를 둥글게

    Collider Material

    • Friction: 마찰 값
    • Bounciness: 탄성 값 (1보다 작을 경우 점점 작게, 1일 경우 그대로 유지, 1보다 클 경우 점점 크게 튕긴다.) 

    Rigidbody 2D

    Rigidbody 2D

    • Body Type: 기본은 Dynamic, Kinematic은 충돌 없는 움직임, Static은 물리적 움직임 x
    • Mass: 질량이 가진 것처럼 표현
    • Linear Drag: 선형적인 움직임에 대한 저항값
    • Angular Drag: 회전하는 움직임에 대한 저항값
    • Collision Detection: 매우 빠른 속도를 가질 경우 충돌 감지를 못할 수도 있는데, Continuos 옵션을 사용할 경우 방지할 수 있다.
    • Sleeping Mode: 충돌 감지 활성화 할 타이밍 (Never sleep은 성능 상 사용 권장 x)
    • Interpolate: 프레임 사이의 추정값을 계산할 때 앞쪽(intra)으로 할 것인가 뒷쪽(extra)로 할 것인가

    OnCollsion? OnTrigger?

    • 어느 한 쪽이라도 Is Trigger가 체크되어 있으면 OnTrigger
    • 둘 다 체크가 안 된 일반 콜라이더라면 OnCollision

    RayCast

    Ray가 Collider에 닿으면 RayCastHit가 발생한다(2D의 경우 RayCastHit2D). Physics.Raycast(startVec, dirVec)를 RayCastHit 타입으로 받아오면 된다. 제일 처음 충돌하는 하나만 반환하기 때문에 관통하는 모든 충돌체를 반환하고 싶다면 RaycastAll()을 사용하면 된다.

    또한 선이 아닌 면적으로 검사하고 싶다면 BoxCast()나 CircleCast() 등을 사용하면 된다. 이 경우 면적이나 각도 등의 인자값을 추가로 주어야 한다.

    레이어 마스크를 적용하여 적중할 개체의 종류를 지정할 수 있다. int mask = 1 << 5; 이런 형식으로도 사용할 수 있지만 int mask = LayerMask.GetMask("LayerName");의 형태로 사용할 수도 있다.

    RayCast는 출발지점과 방향으로 사용한다. 하지만 출발지점과 도착지점을 확실히 알 때에는 LineCast를 사용할 수 있다.


    유니티 입문 팀 프로젝트

    UI 작업

    오늘은 UI 작업과 꾸미기를 중심으로 진행했다.

    우선 스타트 씬의 버튼을 교체하고, 티모 얼굴 아이콘을 분리하여 위치를 조정했다. 폰트도 적용시켰다.

    스타트 씬

     

    패널에 적용시킬 스프라이트도 에셋스토어에서 다운받았다. 그리고 게임 룰을 작성하고 꾸며줬다.

    게임 방법 패널

     

    그리고 팀원이 볼륨 조절 기능도 구현하여 추가하였다. 볼륨 믹서로 구현하였기 때문에 효과음과 배경음악을 따로 설정할 수 있다.

    볼륨 조절 패널

     

    플레이씬과 엔드씬 화면도 꾸며주었다.

    플레이 씬
    일시정지 패널
    엔드 씬

     

     

    버그 수정

    그리고 남은 시간은 버그 수정하는 시간으로 보냈다. 수정된 사항은 다음과 같다.

    • 버섯 및 벽 충돌 오류
    • R 스킬 이동 오류 수정
    • 해상도 변화 대응
    • 사운드 출력 오류
    • 일시정지 패널 닫기 추가
    • 스킬 재사용 대기시간 중 애니메이션 재생 오류
    • 스프라이트가 적용되지 않는 오류

    [결과물]

    https://github.com/LolDaeNam/AvoidTeemoMushroom

     

    GitHub - LolDaeNam/AvoidTeemoMushroom

    Contribute to LolDaeNam/AvoidTeemoMushroom development by creating an account on GitHub.

    github.com

     

    [회고]

    생각보다는 완성도 있게 만들어진 거 같다. 내일이 발표라서 할 게 많다. 클래스 다이어그램도 변경된 것들 손 봐줘야 할 거 같다.