일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 일시정지
- Scrooling
- raycasting
- Ainimation Blending
- LayerMark
- Hp바
- 유니티
- Object Poling
- 플레이어 방향전환
- Prefabs
- Transform
- rotation
- Object Pooling
- 플레이어 이동
- Animation State Machine
- 스크롤링
- 오브젝트 풀링
- rigidbody
- 프리팹
- 2D슈팅게임
- Hpbar
- Blend Type
- 패럴렉스
- apk
- CSharp #자료구조
- Unity
- joystick
- Vector3
- raycast
- Parallax
- Today
- Total
목록GameEngine/Unity - Project (14)
주녘공부일지
'쿡앱스' 의 클라이언트 개발 직무 과제 전형- 주어진 8일 동안 제작한 Mini RPG 게임 // 2024.04.24 ~ 2024.05.01- 게임 플레이 영상의 캐릭터 리소스와 프리팹은 제공받음 자동으로 진행되는 게임- 게임을 시작하면 AI 로직에 의해 게임이 자동으로 진행-설정한 주기로 AI들의 사고가 업데이트 오브젝트 관리 - 모든 아군과 적군에 대한 정보는 오브젝트 매니저에서 얻어올 수 있음- 현재 스테이지에 따른 오브젝트 생성과 파괴를 요청하고 일반 몬스터 웨이브 발생 시점, 스테이지 클리어 실패 여부 등을 판단 AI 스테이트 변경 조건1) idle -> walk - 캐릭터는 가장 가까운 몬스터에게 가고, 없으면 idle 무한- 몬스터는 검색 범위 내의 타겟이 존재함을 감지했을 때 이동하며,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bcaJEd/btsGdYAEILn/SJBybaRnghp9ezL42AzJFk/img.png)
파이어베이스 DB 구조 파이어베이스에 저장할 데이터 타입을 분류해 타입에 따라서 유저 고유 키로 접근하도록 설계 - 데이터 카테고리별로 데이터 그룹을 분리해서 그룹 내에 데이터 Write 시 그룹 단위로 콜백 가능 그룹 내 데이터 Write 시에 콜백 - 자신의 고유 유저 키로 저장된 데이터의 Write 시 콜백을 받을 수 있도록 함 - 각 데이터그룹별로 콜백 대상 리스트를 참조함 ( 인터페이스 ) private List userInfoProcessList = new List(); private List userItemProcessList = new List(); private void SetUpdateCallBack() { DBReferenceDict[FirebaseDataCategory.UserInf..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bTPlkA/btsGdQJqRmI/Whlod2xZy41a45MDmkgMdk/img.png)
유니티에서 제공하는 다국어 지원 시스템 : Localization Package - 설정한 언어에 따라 세팅된 문자열, 에셋 등을 런타임에 변경할 수 있음 - CSV, Google 시트로 임포트, 익스포트 하여 데이터를 관리할 수 있음 https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/index.html About Localization | Localization | 1.0.5 About Localization Use the Localization package to configure localization settings for your application. Add support for multiple languages and r..
'쿡앱스' 의 클라이언트 개발 직무 과제 전형- 주어진 5일 동안 제작한 퍼즐 게임 // 2023.09.12 ~ 2023.09.16 - 게시물 최하단 영상의 모든 리소스는 '쿡앱스'에서 제공받음 게임 플레이 방식- 인접한 블럭을 하나 교체하여 블럭을 매칭시켜 클리어 조건을 달성하는 방식 -> 영상의 스테이지 클리어 조건은 특수 블럭을 모두 매칭시켜 파괴하는 것 - 매칭 조건 : 직선 3개 이상, 4개 이상의 블럭이 모일 경우- 매칭 시 파괴 이펙트, 등의 디테일 측면은 제공받은 리소스 짜집기로 제작 - 특수 블럭 (클리어 조건) 인접한 블록의 아이템이 매칭되었을 때 이벤트가 발생되는 블럭 -> 0회 : 일반 블럭과 같이 멈춰있는 이미지 상태 -> 1회 : 애니메이션이 재생됨 -> 2회 : 매칭 효과 발..
오브젝트 풀링 public class ObjectPoolMgr { class Pool { ... } Dictionary pools = new Dictionary(); Transform root; int poolCount = 5; public void Init() { if (root == null) { root = new GameObject { name = "@Pool_Root" }.transform; } PhotonPrefabPool.Init(); } public void CreatePool(GameObject original, int count) { Pool pool = new Pool(); pool.Init(original, count); pool.Root.parent = root; pools.Add..
1. 동기화 처리 서버 프로그래머가 만들어 준 RPC 함수를 필요에 따라 클라이언트에서 제어하며 사용함 1) 포톤에게 동기화 생성 요청 모노비헤이비어포톤 클래스를 베이스 클래스로 상속받는 클래스를 가진 프리팹을 대상으로 해야 함 - 생성된 오브젝트는 활성화되는 시점에 고유한 ID를 받고, 활성화시킨 클라이언트가 자신인지 확인할 수 있음 - 동일한 프리팹을 방 안의 모든 클라이언트에 생성하고 완료 시점을 확인할 수 있음 ( 동기화 완료 ) > 같은 오브젝트가 모든 클라이언트에 존재함을 보장받음 2) 브로드캐스트 함수를 호출 - 포톤을 통해 브로드캐스트 함수를 호출해 모든 클라이언트에 동일한 함수가 호출되게 함으로써 동기화 3) 변수 동기화 FixedUpdate 주기를 기준으로 변수를 동기화하는 기능을 하기..
더 챌린저스 유저끼리 매칭하여 각각 랜덤매치(랭킹전), 커스텀매치(친선전) 플레이 영상 - 플레이어 기준으로 나이트 캐릭터, 위저드 캐릭터를 각각 녹화 - 실시간으로 동기화되는 네트워크 환경으로, 살짝의 딜레이가 존재함 랜덤 매치 (랭킹전) - 나이트 캐릭터 커스텀 매치 (친선전) - 위저드 캐릭터 - 출시 링크 : https://play.google.com/store/apps/details?id=com.company.FightingGame 더 챌린저스 - Google Play 앱 캐릭터를 선택해 플레이하는 1:1 매칭 대전 격투 게임 play.google.com
1. 미니게임 클리어 관리 - 모든 미니게임은 씬이 분리되어 있으며, 게임 시작은 씬 이동 완료 후 OnEnable() 호출 시점 - 미니게임이 끝나면 게임 클리어여부를 총괄하는 클래스에게 알림 public class MiniGameBase : MonoBehaviour { protected virtual void OnEnable() { MiniGameMgr.miniGameMgr.GameSet(); } public virtual void GameClear() { MiniGameMgr.miniGameMgr.GameClear(); } public virtual void GameOver() { MiniGameMgr.miniGameMgr.GameOver(); } ... } 2. 미니게임 영상 교수님 NPC들의 스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clUG74/btssf3hRgRR/qYnIK1y381k82ftKUX5IzK/img.png)
캐릭터 애니메이터 스테이트 관리 고찰 복잡한 구조도를 가능한 편하게 확인하고 수정할 수 있도록 특정 모션들은 서브 머신으로 묶어서 관리 - 특히 Any State로 사용할 필요가 있는 Dash, Die, Skill(Attack) 등의 모션은 특히 신경써서 처리 -> 해당 트랜지션의 조건 파라미터만 충족하면 어느 상태든 넘어가버리기 때문에 불 변수와 트리거 변수를 이용해 더블체크 1) 파라미터 분류 규칙 - IsXX 변수 (Bool) : 해당 상태로 전환할 수 있다는 의미 -> 서브 스테이트 모션으로 전환, 탈출 조건 등에 사용 - XXState 변수 (Bool) : 해당 상태라는 의미 -> 중복으로 같은 스테이트에 들어가지 않게 하기 위한 조건 등에 사용 - XXTrigger 변수 (Trigger) : ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lTriq/btsp7T879xM/B8dGkI0R5r0kkZBUtREkQk/img.png)
1. 캐릭터를 제어하는 싱글톤 클래스 - 내 캐릭터와 상대 캐릭터가 존재하기 때문에 제어권을 가진 '나의 캐릭터'만 제어하는 기능을 함 - 캐릭터를 생성하고 생성 시 Action 대리자 함수를 등록해 이벤트 발생을 감지 public void PlayerCommand(ENUM_PLAYER_STATE nextState, CharacterParam param = null) { if (activeCharacter == null || !activeCharacter.isControl) return; switch (nextState) { case ENUM_PLAYER_STATE.Idle: activeCharacter.Idle(); break; case ENUM_PLAYER_STATE.Move: activeCharac..