일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- cs
- 애니메이션
- UGUI
- 게임개발
- React Native
- 광고테스트
- canvasgroup
- 프로그래머스
- 애드몹
- 컴퓨터구조
- enum
- unity3D
- http
- unity
- LINQ
- 코딩테스트
- climbingtheleaderboard
- scrollrect
- ui
- 열거형
- dotween
- csvhelper
- C#
- 전면광고
- 유니티
- Admob
- Hackerrank
- 모션
- 랜덤
- 유니티기초
- Today
- Total
목록게임 개발 일지/블록 아케이드 게임 (5)
Ruya Games
이번에 구현해야 할 내용은 움직이는 오브젝트를 이어서 생성하기 입니다. 무한맵도 비슷한 느낌으로 구현 가능합니다. 아래는 간단한 구현 방법입니다. 1. Time.deltaTime으로 리스폰 시간 설정 Time.deltaTime을 사용해서 리스폰 시간을 관리합니다. 아래는 사용 예시입니다. private float timeSinceLastSpawn; private const float respawnTime = 5f; private void Update() { if (respawnTime < timeSinceLastSpawn) { timeSinceLastSpawn = 0f; //여기에 오브젝트 생성 함수를 추가합니다. } else { timeSinceLastSpawn += Time.deltaTime; } }..
이제 구현해야 할 내용은 아래와 같습니다. 플레이어의 블록이 이동했을때 이동한 지점 아래의 블록 색상과 플레이어 블록의 색상이 같다면, 아래의 블록을 제거하고 블레이어 블록은 떨어진다. 그리고 현재 블록들의 기본 상태는 매 프레임마다 일정 값만큼 위로 올라가고 있고, transform.Translate로 구현되어 있습니다. 그렇다면 동작은 플레이어 블록을 이동시킨다. 플레이어 블록의 이동이 끝났을때 아래 블록의 색상값을 확인한다. 색상값이 일치한다면 아래 블록을 제거한다. 일시적으로 transform.Translate의 동작을 멈추고, 플레이어 블록을 아래로 떨어지도록 한다. 플레이어 블록의 아랫면이 다른 블록과 닿으면 다시 다른 블록처럼 위로 상승하도록 한다. 이 순서로 동작해야 합니다. 1번은 구현했..
만드려는 게임의 기본 시스템은 이러합니다. 모든 블록들은 랜덤한 색상값을 갖고, 플레이어의 블록 아래에 플레이어와 같은 색상값을 가진 블록이 있다면 아래의 블록은 사라지고 플레이어의 블록은 밑으로 떨어집니다. 그렇다면 블록 오브젝트마다 색상값을 지정해줘야합니다. int로 지정해줘도 되고, string으로 지정해줘도 되지만 enum(열거형)으로 설정하려고 합니다. int에 비해 가독성도 좋고, string에 비해 오타가 발생할 일도 없으며, 인스펙터상에서 드롭다운으로 값을 지정해줄수 있습니다! enum을 설정하는 방법은 아래와 같습니다. public enum BlockColor { Blue, Red, Pink, Green, White } enum 타입은 첫번째 값부터 0에 대응되고, 순서에 따라 1씩 증가..
블록이 이동된 후에 블록의 현재 상태를 나타내는 Index값이 변경되어야 하는데, 블록은 위치가 한 프레임만에 변하지 않고, DoTween으로 구현한 애니메이션을 통해 위치를 이동합니다. 따라서 DoTween을 통한 오브젝트 이동이 완료된 시점에 index값을 변경해주어야 하는데, OnComplete로 구현했습니다. OnComplete를 사용하면 DoTween애니메이션이 종료된 이후에 특정 코드를 실행하려고 할때 유용합니다. transform.DOLocalMoveX(destinationX, GeneralBlockSetting.PlayerBlockMoveSpeedX).SetEase(Ease.Linear) .OnComplete(() => gameManager.SetBlockPosition(index));
첫번째로 구현할 내용은 1. 일반 블록이 아래에서 위로 올라옴. 2. playable 블록도 아래에서 위로 올라가되, 버튼 클릭에 따라 좌우 이동 가능 입니다. 블록 오브젝트들을 제어할때 사용하는 상수들은 GeneralBlockSetting 클래스에 static으로 선언했습니다. public static class GeneralBlockSetting { public const float TravelDuration = 10f; public const float BlockSpeed = 0.001f; public const float PlayerBlockMoveSpeedX = 0.5f; public const int BlockBasePositionX = -375; public const int BlockSiz..