유니티/토이프로젝트 - 엘리듬

엘리듬(1일차) - 캐릭터 이동, 매트로놈 생성,장애물 소환

현구구 2023. 1. 27. 22:00

 


1. 플레이어 이동

 

Collider - 장애물과 맵 경계선과의 출돌을 위한 컴포넌트

Rigidbody - 플레이어에게 힘을 주기 위한 컴포넌트(실질적인 이동) BodyType은 스크립트로 제어 할 것이기 때문에 Kinematic으로 설정해둔다.

이 기본 컴포는트를 추가한 다음 새로운 컴포넌트를 생성하고 이름은 Player로 한다.

다음과 같이 Box Collider로 경계선을 구분짓는다.

Is Trigger를 체크해주어 플레이어가 해당 경계선에 닿았을 경우 그 이상으로 움직이지 못하게 설정해줄거다.

Player스크립트로 가서 변수들을 선언하고 SpriteRenderer변수같은 경우는 컴포넌트를 받아와야 하므로 Awake함수에서 초기화 해준다.

move함수를 만든다.

만약 Border에 닿은 상태에서 그 이상으로 키가 눌러진다면 h와 v각각을 0으로 만들어 경계 밖으로 나갈 수 없도록 한다.

 

위 if문에 걸리지 않는다면 현재위치 curPosnextPos를 더해주어 플레이어를 이동시킨다. 이 때 Time.deltaTime을 곱해주어야 컴퓨터 성능간에 플레이 차이가 발생하지 않는다.

 

마지막으로 횡 이동인 h가 음수, 즉 왼쪽방향으로 이동할 경우 flipX를 true로 만들어 플레이어가 왼쪽을 바라보도록 한다.


 

2. 매트로놈 생성

사각형을 늘려 회전하며 bpm을 알 수 있도록 하는 오브젝트를 생성하고 스크립트를 추가한다.

https://www.musicca.com/ko/metronome

 

온라인 메트로놈 | Musicca

오디오 및 비주얼 비트를 활용한 무료 온라인 메트로놈. BPM을 선택하거나 템포를 맞추세요. 연습할 때 큰 도움이 됩니다.

www.musicca.com

해당 사이트에서 불러올 노래의 bpm을 파악하여 bpm변수로 지정하고

다음과 같이 코드를 작성한다.

노래가 켜졌을 때, 60/bpm만큼의 시간이 지났을 때 45도 오브젝트를 회전하도록한다.


bpm은 배경화면 오브젝트에 AudioSource 컴포넌트를 추가하여 해당 컴포넌트에 넣어두었고

다음과 같은 스크립트를 추가하여 3초 뒤 브금이 실행되도록 하였다.


3.장애물 생성

먼저 장애물이 나올 위치에 R,G,B,A 값을 조정하여 경고 오브젝트를 하나 생성한다.

Invoke를 통해 1초뒤에 해당 위치에 장애물을 소환하고 자신을 삭제하도록하는 스크립트를 추가한다.

또한 장애물이 될 오브젝트도 하나 생성한다.

경고 오브젝트와 다르게 Rigidbody Collider 컴포넌트를 추가하고 IsTrigger를 선택한다.

여기도 역시 새로운 스크립트를 작성한다.

Invoke를 통해 1초뒤 자신을 삭제시키도록 한다.

완성된 오브젝트는 프리펩으로 저장한다.

빈 오브젝트를 생성하고 GameManager 스크립트를 작성한다.

먼저 장애물들이 소환될 위치를 빈 오브젝트로 지정하고

다음과 같이 아이콘으로 보기 쉽게 나타낸다.

GameManager 스크립트의 변수 선언은 다음과 같다.

spawnPoints - 장애물을 소환할 위치들의 배열

warnObject - 경고표시를 소환할 프리팹

bpm - 박자에 맞춰 장애물을 소환할 시간변수

currentTime - 현재 시간 변수

SpawnWarn이라는 함수를 만들어 숫자 0~6사이에 Instantiate를 통해 경고 오브젝트를 생성하도록한다.

SpawnWarn 함수는 Update에서 일정 시간이 지나야만 실행되도록 코드를 작성한다.