본문 바로가기

유니티_(Animation / 사운드 적용 / UI / 인트로 화면) 멋쟁이사자처럼 유니티 부트캠프 15회차 추가학습

@salmu2025. 6. 10. 15:30
반응형

[15회차 수업내용]

1. 고양이 애니메이션 적용하기

2. 게임 사운드 적용하기

3. UI 만들기

 

 

 

1.1 고양이 애니메이션 (걷기/점프) 실습 단계

 

ㄱ. 애니메이션 클립 만들기

  • 기존 ‘Cat’ 오브젝트 선택 → Animation 창 열기
  • [Create New Clip…] → 새로운 애니메이션 클립 생성 (예: Cat Jump)
  • 점프 스프라이트 여러 개 드래그 → Animation 창에 추가
  • Loop 해제 → 점프는 반복 애니메이션 아님

ㄴ. Animator 설정

  • Parameters에 다음 추가
    • Trigger → Jump
    • Bool → isGround
  • 상태 연결
    • Any State → Cat Jump 연결 // Condition: Jump Trigger
    • Cat Jump → Cat Walk 연결
      • Has Exit Time 끄기 (애니메이션 지연 방지)
      • Condition: isGround == true

*Has Exit Time이란 :

현재 애니메이션 끝까지 재생 후 전환

컷신, 자연스러운 동작 등 애니 끝나야 할 때 사용

 

 

+ 사용 코드

using System;
using UnityEngine;

public class CatController : MonoBehaviour
{    
    private Rigidbody2D catRb;
    private Animator catAnim;
    
    public float jumpPower = 10f;
    public bool isGround = false;
    
    public int jumpCount = 0;

    void Start()
    {
        catRb = GetComponent<Rigidbody2D>();
        catAnim = GetComponent<Animator>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && jumpCount < 2)
        {
            catAnim.SetTrigger("Jump");         // 애니메이터에 트리거 전달 → 점프 애니메이션 실행
 		    catAnim.SetBool("isGround", false); // 땅에 붙어있지 않음을 Animator에 전달
			catRb.AddForceY(jumpPower, ForceMode2D.Impulse);  // 위쪽으로 힘 주기 (순간적으로 점프)
            jumpCount++; // 1씩 증가
        }
    }

    private void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.CompareTag("Ground"))
        {
            catAnim.SetBool("isGround", true);
            jumpCount = 0;
            isGround = true;
        }
    }

    private void OnCollisionExit2D(Collision2D other)
    {
        if (other.gameObject.CompareTag("Ground"))
        {
            isGround = false;
        }
    }
}

 

 

2.1 실습

방법1) hierarchy에서 - Audio -Audio Source

방법2)SoundControler로 제어

 

using UnityEngine;

namespace Cat
{
    public class SoundManager : MonoBehaviour
    {
        public AudioSource audioSource;
        public AudioClip bgmClip;
        public AudioClip jumpClip;

        void Start()
        {
            SetBGMSound();
        }
        
        public void SetBGMSound()
        {
            audioSource.clip = bgmClip; // 오디오 소스에 사운드 파일 설정
            audioSource.playOnAwake = true; // 시작할 때 자동 재생
            audioSource.loop = true; // 반복 기능
            audioSource.volume = 0.1f; // 소리 음량
            
            audioSource.Play(); // 시작
        }
        
        public void OnJumpSound()
        {
            audioSource.PlayOneShot(jumpClip); // 이벤트 사운드
        }
    }
}

 

 

  • 네임스페이스: Cat이라는 공간 안에 정의 → 다른 스크립트와 이름 충돌 방지 (SoundManager라는건 겹칠 수 있으므로)
  • audioSource : 소리 재생기(스피커 역할)  소리를 ‘틀어주는 역할’ / 소리를 들으려면 반드시 필요함.       ->유니티상에서 public Audio Source에 컴포넌트로 추가한 audiosource 끌어서 넣어줘야 함

 

 

3. 고양이 인트로 화면 (UI) 구성하기

 

3.1 Canvas란

Unity UI의 루트(최상위) 역할을 담당하는 UI 전용 공간
→ 모든 UI 요소는 반드시 Canvas 안에 있어야 화면에 표시됨 (자동으로 생성됨)

 

Screen Space - Overlay - 화면 위에 항상 표시- 가장 일반적- 카메라 무관 메뉴, HUD, 점수판 UI
Screen Space - Camera - 특정 카메라 기준으로 표시- 카메라 효과 적용 가능 (원근감 등) 3D UI 효과, 화면 왜곡 UI
World Space - 3D 공간 속 오브젝트처럼 배치- 위치, 크기, 회전 가능 3D 월드 안의 UI, 간판, NPC 이름표 등

 

 

3.2 panel

: 이미지랑 같은 역할

    • UI 요소들을 그룹화하고 배경을 제공하는 용도사각형 이미지 오브젝트
    • UI 정렬, 배경 효과, 반투명 처리 등을 위해 사용
RectTransform 위치, 크기, 기준점(Anchor) 설정

 

 

 

 

요소들이 다 따로 노는 것 같지만 일단 기능구현해보기

 

반응형
salmu
@salmu :: SMU 각종 기록

목차