일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Unity
- 플레이어 이동
- heap tree
- pccp 기출문제 3번
- Ainimation Blending
- C#
- pccp 기출문제 1번
- 오브젝트 풀링
- 2D슈팅게임
- 9375번
- Lv2
- Algorithm
- Blend Type
- dp 알고리즘
- dfs
- 미로 탈출 명령어
- 플레이어 방향전환
- Hp바
- 유니티
- pccp 기출문제 2번
- Back Tracking
- Animation State Machine
- 프로그래머스
- 충돌위험 찾기
- CSharp #자료구조
- 백준 c++ 9375번
- 연속 펄스 부분 수열의 합
- LayerMark
- 양과 늑대
- Lv.3
- Today
- Total
목록GameDevelopment/[Unity] Project (12)
주녘공부일지
카메라 인스펙터 툴해피스케치의 요청에 따라 모션 감지를 이용한 AR게임 프로토타입 모델을 제작하는 과정에서 구현- 여러 가지 미니게임 스테이지를 구현하여 2명의 사용자가 대전을 하는 AR 멀티 게임- 기획자가 직접 특정 스테이지의 카메라 세팅 값을 설정하여 Save&Load 할 수 있음 - 인게임에서 사용되는 TeamCamera 클래스를 상속받아 CameraEditor를 구현- 스테이지가 로드되면 저장되어 있던 데이터를 스테이지 시작 시 로드하여 세팅하도록 설계 using System.Collections;using System.Collections.Generic;using UnityEditor;using UnityEngine;[CustomEditor(typeof(CameraEditor))]publi..
게임 플레이 영상유한 상태 기계 ( FSM ) 를 기반으로 한 상태 관리1-1) 플레이어 상태 관리 ( Condition, Exit, Enter )protected EPlayerState _playerState = EPlayerState.None;public virtual EPlayerState PlayerState{ get { return _playerState; } protected set { if (_playerState == value) return; bool isChangeState = true; switch (value) { case EPlayerState.Idle: isChangeStat..
1. 동기화 처리서버 프로그래머 파트에서 제공한 RPC 함수를 필요에 따라 클라이언트에서 제어하며 사용함 1) 포톤에게 동기화 생성 요청모노비헤이비어포톤 클래스를 베이스 클래스로 상속받는 클래스를 가진 프리팹을 대상으로 해야 함- 생성된 오브젝트는 활성화되는 시점에 고유한 ID를 받고, 활성화시킨 클라이언트가 자신인지 확인할 수 있음- 동일한 프리팹을 방 안의 모든 클라이언트에 생성하고 완료 시점을 확인할 수 있음 ( 동기화 완료 ) > 같은 오브젝트가 모든 클라이언트에 존재함을 보장받음 2) 브로드캐스트 함수를 호출- 포톤을 통해 브로드캐스트 함수를 호출해 모든 클라이언트에 동일한 함수가 호출되게 함으로써 동기화 3) 변수 동기화FixedUpdate 주기를 기준으로 변수를 동기화하는 기능을 하기 위해 ..
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: activeCha..
더 챌린저스유저끼리 매칭하여 각각 랜덤매치(랭킹전), 커스텀매치(친선전) 플레이 영상- 플레이어 기준으로 나이트 캐릭터, 위저드 캐릭터를 각각 녹화- 실시간으로 동기화되는 네트워크 환경으로, 살짝의 딜레이가 존재함1) 랜덤 매치 (랭킹전) - 나이트 캐릭터 2) 커스텀 매치 (친선전) - 위저드 캐릭터3) 훈련장4) 설정창더 챌린저스 - 키 설정 시스템 - 출시 링크 : https://play.google.com/store/apps/details?id=com.company.FightingGame 더 챌린저스 - Google Play 앱캐릭터를 선택해 플레이하는 1:1 매칭 대전 격투 게임play.google.com
파이어베이스 DB 구조 파이어베이스에 저장할 데이터 타입을 분류해 타입에 따라서 유저 고유 키로 접근하도록 설계 - 데이터 카테고리별로 데이터 그룹을 분리해서 그룹 내에 데이터 Write 시 그룹 단위로 콜백 가능 그룹 내 데이터 Write 시에 콜백 - 자신의 고유 유저 키로 저장된 데이터의 Write 시 콜백을 받을 수 있도록 함 - 각 데이터그룹별로 콜백 대상 리스트를 참조함 ( 인터페이스 ) private List userInfoProcessList = new List(); private List userItemProcessList = new List(); private void SetUpdateCallBack() { DBReferenceDict[FirebaseDataCategory.UserInf..
유니티에서 제공하는 다국어 지원 시스템 : 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..
퍼즐 게임 - 인접한 블럭을 하나 교체하여 블럭을 매칭시켜 클리어 조건을 달성하는 방식 -> 영상의 스테이지 클리어 조건은 특수 블럭을 모두 매칭시켜 파괴하는 것 - 매칭 조건 : 직선 3개 이상, 4개 이상의 블럭이 모일 경우- 매칭 시 파괴 이펙트, 등은 이미지 짜집기로 제작 - 특수 블럭 (클리어 조건) 인접한 블록의 아이템이 매칭되었을 때 이벤트가 발생되는 블럭 -> 0회 : 일반 블럭과 같이 멈춰있는 이미지 상태 -> 1회 : 애니메이션이 재생됨 -> 2회 : 매칭 효과 발생 ( 클리어 카운트 감소 ) + 특수 블럭의 매칭 발생 시 블럭들의 이벤트가 끝나고 게임 클리어 여부를 판단블록 매칭 이벤트 실행 순서 // 블록 매칭 이벤트가 발생했을 경우 호출되는 코루틴 private IEn..
오브젝트 풀링 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. 미니게임 클리어 관리 - 모든 미니게임은 씬이 분리되어 있으며, 게임 시작은 씬 이동 완료 후 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들의 스..