와챠의 우당탕탕 코딩 일기장
[유니티] 스파르타 코딩 : 게임 개발 - 3주차 본문
반응형
원랜 소리까지 들림!!
오늘 한 것
- 배경 추가
- 이미지 뎁스 바꾸기(배경은 뒤로, 캐릭터, 물체들은 앞으로)
- 적 공격하기(Colider 이용)
- 게임 오버 구현(처음으로 돌아가기)
- 싱글톤 이용하기(GameManager, SoundManager)
- BGM, 공격 사운드(효과음) 추가
- 코인 먹으면 점수 얻고 코인 없어지기 구현
오늘 배운 것 정리
- https://opengameart.org/ 에서 무료로 배경, 사운드 소스 얻을 수 있음
- 맘에 드는 거 다운로드해서 드래그 앤 드롭 해주면 됨
- 이미지 뎁스 바꾸기
- 이미지 뎁스 : 이미지들이 겹칠 때, 누가 앞으로 나오고 누가 뒤로 가는지 정해주는 것
- 게임 오브젝트의 Sprite Renderer 컴포넌트 > Order in Layer로 조정
- Order in Layer 값이 크다 : 이미지 앞으로
- Order in Layer 값이 작다 : 이미지 뒤로
- 적 공격하기(밟기)
- OnTriggerEnter2D 함수 안에 if (collision.gameObject.tag == "enemy")로 확인 가능
- > 내가 밟은 게 적 오브젝트(공룡)인가?
- 적 오브젝트에 붙어있는 Component 가져오기
- EnemySaurus enemy = collision.gameObject.GetComponent<EnemySaurus>();
- > collision이 붙어 있는 GameObject의 EnemySaurus 컴포넌트 가져오기
- EnemySaurus enemy = collision.gameObject.GetComponent<EnemySaurus>();
- 적의 움직임 멈추기
- isDead 변수를 이용해 Update 함수를 return하게 함
- Update함수를 끝내게 함!
- isDead 변수를 이용해 Update 함수를 return하게 함
- OnTriggerEnter2D 함수 안에 if (collision.gameObject.tag == "enemy")로 확인 가능
- public과 private
- public : 외부에서 할당 가능(유니티 내부에서 보임, 외부 참조 가능)
- private : 외부에서 확인할 수 없음
- 기본 : private
- 게임의 필수 요소
- 목표(코인 먹기, 적을 해치우기 등)
- 메인 목표, 서브 목표, 루프
- > 공격 외의 '룰'이 있어야 함
- GameManager!
- GameManager
- '룰'
- 게임 오버 됐을 때 다시 시작하기 등...
- 게임 오버
- SceneManager.LoadScene(0); // 첫 번째 씬을 부르기
- Invoke("GameOver_", 2); // GameOver_를 2초 뒤에 호출
- 게임 오버
- 싱글톤 기법
- 게임 또는 씬 내에 오직 하나만 존재하는 클래스
- '매니저' 관련 클래스에 많이 사용됨
- Input Manager, Game Manager, SoundManager 등...
- 아래는 싱글톤 만드는 방법 중 하나
- 너무 많이 사용하면 코드 복잡해짐, 문제 발생 시 추적도 힘듦
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 싱글톤
public class GameManager : MonoBehaviour
{
// static : 게임 전체에 단 하나만 존재, ㅣ = 인스턴스
public static GameManager I;
// Start와 동일한데 한 단계 앞서서 호출
// Awake -> Start -> Update -> Update...
private void Awake()
{
I = this; // 자기 자신을 넣어주기
}
}
- BGM 추가(무한 재생)
- GameManager에 AudioSource 추가
- AudioSource : 사운드 재생하는 스피커
- Play On Awake 체크 : 플레이와 동시에 재생
- Loop 체크 : 무한재생
- GameManager에 AudioSource 추가
- 효과음 추가(특정 상황에만 재생 = 스크립트 사용)
- 게임 플레이어 오브젝트에 AudioSource 추가
- 플레이어가 적을 밟을 때 소리를 재생하기 위해
- 게임 플레이어 오브젝트에 AudioSource 추가
public AudioSource audioSource;
public AudioClip clip;
// 유니티 기본 제공 함수, 트리거 설정한 박스 콜라이더에 다른 박스 콜라이더가 감지됐을 때(충돌 발생) 호출
private void OnTriggerEnter2D(Collider2D collision)
{
// 적 태그면 공격 성공
if (collision.gameObject.tag == "enemy")
{
// 소리 재생
audioSource.clip = clip;
audioSource.Play();
}
}
느낀 점
...내가 게임을 잘 못 해서 그런가 공격이 잘 들어갔는자 확인해야되는데
적을 밟는 게 되게 힘들었음ㅋㅋㅋ 쩝
근데 노래도 넣고 코인도 넣으니까 더 게임같아져서 그런가 더 재밌었다!!
이제 코드로 동작 만드는 게 익숙해졌음
반응형
'코딩 일기장 > Unity' 카테고리의 다른 글
[유니티] 스파르타 코딩 : 게임 개발 - 5주차(마지막) (0) | 2021.06.23 |
---|---|
[유니티] 스파르타 코딩 : 게임 개발 - 4주차 (0) | 2021.06.21 |
[유니티] 스파르타 코딩 : 게임 개발 - 2주차 (0) | 2021.06.08 |
[유니티] 스파르타 코딩 : 게임 개발 - 1주차 (0) | 2021.06.07 |
[유니티] 스파르타 코딩 : 게임 개발 - 0주차 (0) | 2021.05.30 |
Comments