일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플레이어 방향전환
- raycasting
- Scrooling
- Object Poling
- 패럴렉스
- Parallax
- rotation
- 유니티
- CSharp #자료구조
- 2D슈팅게임
- Vector3
- Unity
- 오브젝트 풀링
- 플레이어 이동
- Ainimation Blending
- Object Pooling
- joystick
- Prefabs
- 프리팹
- Transform
- Hp바
- apk
- rigidbody
- 스크롤링
- Blend Type
- 일시정지
- Hpbar
- LayerMark
- Animation State Machine
- raycast
- Today
- Total
목록GameEngine (46)
주녘공부일지
더 챌린저스 유저끼리 매칭하여 각각 랜덤매치(랭킹전), 커스텀매치(친선전) 플레이 영상 - 플레이어 기준으로 나이트 캐릭터, 위저드 캐릭터를 각각 녹화 - 실시간으로 동기화되는 네트워크 환경으로, 살짝의 딜레이가 존재함 랜덤 매치 (랭킹전) - 나이트 캐릭터 커스텀 매치 (친선전) - 위저드 캐릭터 - 출시 링크 : 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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/VHzdi/btspmKsQE6M/eG6I4BvIX9mkK4DBFpr0HK/img.png)
1. 애니메이터 컨트롤러 - 복잡한 구조도를 가능한 편하게 확인하고 수정할 수 있도록 특정 모션들은 서브 머신으로 묶어서 관리 - bool 변수와 Trigger 변수로 두 번 이상 체크를 함으로써 안정성 향상 ex) isHit : 피격상태 / HitTrigger : 피격 1회 2. 애니메이터 오버라이드 컨트롤러 - 매우 복잡한 캐릭터의 애니메이터 컨트롤러를 재사용하기 위해 사용 - 원본 애니메이터 컨트롤러와 동일한 로직을 사용하지만 원본 대신 새롭게 할당된 애니메이션을 재생 - 애니메이션 클립 이벤트와 스테이트 머신 비헤이비어(후술)를 통해 해당 모션에 대한 기능을 함 3. 스테이트 머신 비헤이비어 활용 유니티에서 제공해주는 특별 스크립트 클래스로 스크립트를 상태 머신에 연결 가능 - 모션의 상태 변경을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/czEK8A/btspl6VrDYc/86CPzhfeNACYDeK1ULkBjK/img.png)
1. 공격, 이펙트 오브젝트 구조도 - 동기화되는 오브젝트들의 공통적인 기능들을 추상화하기 위해 상속 구조도를 설계해 구현함 2. 캐릭터별 동기화 오브젝트 영상 Knight 캐릭터 영상 Wizard 캐릭터 영상 https://godgjwnsgur7.tistory.com/80 [더 챌린저스] 오브젝트 풀링 오브젝트 풀링 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; }..
1. 제이슨 데이터 관리 - 제이슨 데이터를 빠르고 편리하게 사용하기 위해 파싱해서 딕셔너리로 사용 public void Init() { SkillDict = LoadJson("SkillData").MakeDict(); CharInfoDict = LoadJson("CharacterData").MakeDict(); } Loader LoadJson(string path) where Loader : ILoader { TextAsset textAsset = Managers.Resource.Load($"Data/{path}"); return JsonUtility.FromJson(textAsset.text); } [Serializable] public class Skill { public int skillType;..
1. 키 설정 시스템 - 인게임 내에서 유저에게 불편함을 줄 수 있는 입력 키들은 고정으로 위치 및 크기를 정해주기엔 개수가 너무 많다고 판단해서 유저가 위치, 크기, 투명도 등을 직접 변경하여 저장할 수 있게 함 -> 그래픽 팀에게 전달할 레퍼런스를 찾다가 예전에 플레이했던 '카트라이더 러쉬플러스' 라는 게임의 키 설정 방식이 매우 편리했던 기억이 있어 레퍼런스로 삼음 + 데이터 저장방식은 유니티에서 제공해주는 데이터 관리 클래스인 PlayerPrefs를 사용 2. 비교 영상 더 챌린저스 - 키 설정 시스템 카트라이더 러쉬플러스 - 키 설정 시스템
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b4N7sK/btrw6fYRdjh/17g9mGQlRo8IKCOkdj7G81/img.png)
Animation Blending 이란? 블랜드 트리를 활용하여 두 가지 이상의 모션을 섞는 것으로, 매끄러운 애니메이션 재생을 위해 사용함 ( 즉, 애니메이션 변화에 딜레이를 주면서 딜레이되는 시간동안 모션을 섞는 것이라고 봐도 무방 ) Blend Type 1D : 블랜드 할 기준 값이 하나만 필요한 블랜드 트리에 사용 ( 아래 예제의 wait_run_ratio 파라미터 ) 2D Simple Directional - 모션이 다른 방향을 표시할 때 유용, 같은 방향으로 여러 모션을 가질 수 없음 ex) 앞으로 걷기, 뒤로 걷기, 오른쪽으로 걷기, 왼쪽으로 걷기 2D Freeform Directional - 모션이 다른 방향을 표시하고 같은 방향에서 여러 모션을 가질 수 있음 ex) 앞으로 걷기, 앞으로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQ9ui1/btrwzciQ1Xj/t2IrQkdXDLU0PQDkNhvTeK/img.png)
StateMachineBehaviour란?AnimatorController의 컴포넌트로 붙일 수 있는 StateMachineBehaviour 스크립트- Animator 상태 머신의 상태 변화에 따라 CallBack 함수를 실행해주는 방식 public class MoveAnim : StateMachineBehaviour using UnityEngine;public class MoveAnim : StateMachineBehaviour{ public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { // 애니메이션 실행 시 첫 프레임에 한번 호출 } publi..