제작
-
추구하는 디자인깔끔함 하단퍼즐의 Container에서 등록된 Dictionary로 사용상단토글 : EventManager를 통한 Observer 패턴을 통해 어두운 페이지와 밝은 페이지를 구분샘플 이미지 보기 : 게임 시작 시 Capture를 통해 생성된 이미지를 보여주는 형식카메라 정렬 : 현재 퍼즐의 배경이 되는 이미지 크기에 맞추어 화면의 크기를 적용
기본 기능 완성추구하는 디자인깔끔함 하단퍼즐의 Container에서 등록된 Dictionary로 사용상단토글 : EventManager를 통한 Observer 패턴을 통해 어두운 페이지와 밝은 페이지를 구분샘플 이미지 보기 : 게임 시작 시 Capture를 통해 생성된 이미지를 보여주는 형식카메라 정렬 : 현재 퍼즐의 배경이 되는 이미지 크기에 맞추어 화면의 크기를 적용
2024.06.17 -
문제점퍼즐 조각 중 Scale,Sprite값이 동일한 경우 같은 퍼즐 조각으로 서로 다른 위치에 있어도 같음을 판단할 수 있어야 됨 하지만, 각 퍼즐 조각에 대한 "복사"를 통한 퍼즐 배치가 아닌, 직접적인 "참조"를 통해 퍼즐을 배치한다. 해결퍼즐 조각에 대한 공유를 통한 퍼즐을 가져오기 위한 방법을 사용 이에 대해 적용한 패턴은 FlyWeight 패턴을 적용해 보았음 중복을 없애려고 했지만, 중복을 허용해야지만 각 퍼즐 조각에 대한 개수를 표시할 수 있다고 생각했음 FlyWeighy 는 대량의 데이터를 생성 및 공유하는 개념으로 관리를 하지만, 여기서는 이미 생성이 되어 있는 퍼즐 조각 데이터를 등록하고, 공유하도록 만들어보았다. 하지만, 아직 많이 미흡하다고 생각한다. Pices 공유하는 클래스 P..
중복된 퍼즐 조각의 해결문제점퍼즐 조각 중 Scale,Sprite값이 동일한 경우 같은 퍼즐 조각으로 서로 다른 위치에 있어도 같음을 판단할 수 있어야 됨 하지만, 각 퍼즐 조각에 대한 "복사"를 통한 퍼즐 배치가 아닌, 직접적인 "참조"를 통해 퍼즐을 배치한다. 해결퍼즐 조각에 대한 공유를 통한 퍼즐을 가져오기 위한 방법을 사용 이에 대해 적용한 패턴은 FlyWeight 패턴을 적용해 보았음 중복을 없애려고 했지만, 중복을 허용해야지만 각 퍼즐 조각에 대한 개수를 표시할 수 있다고 생각했음 FlyWeighy 는 대량의 데이터를 생성 및 공유하는 개념으로 관리를 하지만, 여기서는 이미 생성이 되어 있는 퍼즐 조각 데이터를 등록하고, 공유하도록 만들어보았다. 하지만, 아직 많이 미흡하다고 생각한다. Pices 공유하는 클래스 P..
2024.06.17 -
한 일이동이동은 InputManager를 통해 처리하고, InputData만 가져와 비교하여 사용하였다.LeftBottom, RightTop 값을 Clamp하여 이동을 제한하였다.줌인 아웃PC : 휠모바일 : 두 손가락 드래그모바일과의 구분전처리 지시문을 사용하여 구분카메라를 그림 크기에 맞추게임 시작 시 현재 그림의 배경에 해당하는 Spite를 읽어와 화면 비율에 따른 OrthographicSize를 지정하였다. 결과 Movement 입력 처리 클릭 한 곳에 UI가 위치하면 카메라가 움직이면 안되기에, Canvas UI의 존재를 먼저 판단하고 입력을 처리했다. 문제점카메라가 이동 후 이동된 좌표에서 ScreenToWorldPoint를 통한 좌표를 생성한 것이 input.S2WTouchPosit..
카메라 입력 및 OrthographicSize한 일이동이동은 InputManager를 통해 처리하고, InputData만 가져와 비교하여 사용하였다.LeftBottom, RightTop 값을 Clamp하여 이동을 제한하였다.줌인 아웃PC : 휠모바일 : 두 손가락 드래그모바일과의 구분전처리 지시문을 사용하여 구분카메라를 그림 크기에 맞추게임 시작 시 현재 그림의 배경에 해당하는 Spite를 읽어와 화면 비율에 따른 OrthographicSize를 지정하였다. 결과 Movement 입력 처리 클릭 한 곳에 UI가 위치하면 카메라가 움직이면 안되기에, Canvas UI의 존재를 먼저 판단하고 입력을 처리했다. 문제점카메라가 이동 후 이동된 좌표에서 ScreenToWorldPoint를 통한 좌표를 생성한 것이 input.S2WTouchPosit..
2024.06.16 -
중간 결산 24.6.15 2024.06.15
-
문제퍼즐을 클라이언트가 지정하고 진행을 위한 각 퍼즐 조각들을 정렬할 필요가 있었음 그에 대한 방법으로 Scene에서 Z 축을 기준으로 퍼즐 조각들이 될 오브젝트를 배치하고, 배치된 오브젝트의 Sort를 스크립트를 통해 정합니다. 규칙 Sorting 정렬0~ -N의 범위에서 오브젝트의 Sort를 지정배경배경이 되는 기본 틀이 되는 오브젝트는 맨 뒤에 위치함 퍼즐 배치의 예시 정렬 자식 오브젝트 중 PuzzleSortData를 찾아서 Z 축을 기준으로 정렬을 실시하여 순서를 지정한다.using UnityEngine;using System.Linq;/// /// 퍼즐 정렬을 위한 중간 데이터/// public class PuzzleSortContainer : MonoBehaviour{ [Se..
퍼즐 오브젝트의 Sort 정렬문제퍼즐을 클라이언트가 지정하고 진행을 위한 각 퍼즐 조각들을 정렬할 필요가 있었음 그에 대한 방법으로 Scene에서 Z 축을 기준으로 퍼즐 조각들이 될 오브젝트를 배치하고, 배치된 오브젝트의 Sort를 스크립트를 통해 정합니다. 규칙 Sorting 정렬0~ -N의 범위에서 오브젝트의 Sort를 지정배경배경이 되는 기본 틀이 되는 오브젝트는 맨 뒤에 위치함 퍼즐 배치의 예시 정렬 자식 오브젝트 중 PuzzleSortData를 찾아서 Z 축을 기준으로 정렬을 실시하여 순서를 지정한다.using UnityEngine;using System.Linq;/// /// 퍼즐 정렬을 위한 중간 데이터/// public class PuzzleSortContainer : MonoBehaviour{ [Se..
2024.06.15 -
문제점UI와 Object를 자연스럽게 꺼낼 수 있도록 하는 방법을 고민했는데,Scroll의 Rect의 범위를 사용하려 했지만, 실패했다. 그 후, 각 UI의 Rect의 Local 범위 내에서 상단을 벗어났을 경우 생성 되도록 했다. 시도 1 Rect의 범위 판단 ScrollRect의 실제 UI 좌표 상단을 벗어나면 실행을 오브젝트를 생성하려고 했지만, 내가 생각했던 Position 값과는 상이하여 실패했다.public static void GetBoundaryPosition(RectTransform rect, out RectBoundaryPosition rectPos){ //피봇을 기준으로 한 가로 세로 반지름값 float xPivotWidth = rect.pivot.x * rect.rect..
UI를 통한 퍼즐 조각 꺼내기문제점UI와 Object를 자연스럽게 꺼낼 수 있도록 하는 방법을 고민했는데,Scroll의 Rect의 범위를 사용하려 했지만, 실패했다. 그 후, 각 UI의 Rect의 Local 범위 내에서 상단을 벗어났을 경우 생성 되도록 했다. 시도 1 Rect의 범위 판단 ScrollRect의 실제 UI 좌표 상단을 벗어나면 실행을 오브젝트를 생성하려고 했지만, 내가 생각했던 Position 값과는 상이하여 실패했다.public static void GetBoundaryPosition(RectTransform rect, out RectBoundaryPosition rectPos){ //피봇을 기준으로 한 가로 세로 반지름값 float xPivotWidth = rect.pivot.x * rect.rect..
2024.06.15 -
목적1. 오르골은 영혼을 승천하기 위해 '활성화' 시킨다는 개념으로 활성화된 영혼은 카메라로 촬영 시 승천이 가능하다. 고려 사항1. 영혼은 몬스터만나면 도망간다.2. 영혼이 승천하면 오르골이 파괴되며 사라진다.3. 몬스터가 오르골 근처에 온다면 파괴된다.4. 오르골이 켜지면 주변 영혼이 일정 범위에 존재하면 찾아온다. 플로우 차트 1. 기본적으로 영혼이 활성화를 시키는데, 만약 영혼이 활성화가 불가능한 상태[몬스터가 근처에 있다 / 승천 중이다.]일 경우 False를 반환해 다시 탐색을 한다.2. 탐색된 영혼이 오르골 범위를 벗어날 경우 영혼은 승천 불가능한 상태가 되고 보이지 않게 된다.3. 오르골 사운드와 승천 가능한 영혼 목록은 EventManager에서 관리하면서 필요할 때 불러서 사용한다..
아이템 - 오르골 [게임 제작]목적1. 오르골은 영혼을 승천하기 위해 '활성화' 시킨다는 개념으로 활성화된 영혼은 카메라로 촬영 시 승천이 가능하다. 고려 사항1. 영혼은 몬스터만나면 도망간다.2. 영혼이 승천하면 오르골이 파괴되며 사라진다.3. 몬스터가 오르골 근처에 온다면 파괴된다.4. 오르골이 켜지면 주변 영혼이 일정 범위에 존재하면 찾아온다. 플로우 차트 1. 기본적으로 영혼이 활성화를 시키는데, 만약 영혼이 활성화가 불가능한 상태[몬스터가 근처에 있다 / 승천 중이다.]일 경우 False를 반환해 다시 탐색을 한다.2. 탐색된 영혼이 오르골 범위를 벗어날 경우 영혼은 승천 불가능한 상태가 되고 보이지 않게 된다.3. 오르골 사운드와 승천 가능한 영혼 목록은 EventManager에서 관리하면서 필요할 때 불러서 사용한다..
2023.11.04 -
보여지는 이동 -몬스터가 추격할 시 보여지는 플레이를 추격할 경우에는 빠르게 업데이트하고, 그렇지 않은 상태일 경우 느리게 업데이트를 한다.플레이어 주기 : 1.0f;기본 이동 주기 : 3.0f 구현-관절이 꺾이며 오는 기괴한 추격을 표현하고 싶었기 때문에 중간중간 딜레이를 주어 추격하게 만들었다.- 몬스터의 추격 알고리즘내에서 해당 함수를 사용하여 움직임을 보여준다.public void Movement(Vector3 _position, Vector3 _forward){ StartCoroutine(MovementCroutine(_position , _forward));}IEnumerator MovementCroutine(Vector3 _position, Vector3 _forward){ //다..
[게임 제작] 몬스터 추격 최종 완성보여지는 이동 -몬스터가 추격할 시 보여지는 플레이를 추격할 경우에는 빠르게 업데이트하고, 그렇지 않은 상태일 경우 느리게 업데이트를 한다.플레이어 주기 : 1.0f;기본 이동 주기 : 3.0f 구현-관절이 꺾이며 오는 기괴한 추격을 표현하고 싶었기 때문에 중간중간 딜레이를 주어 추격하게 만들었다.- 몬스터의 추격 알고리즘내에서 해당 함수를 사용하여 움직임을 보여준다.public void Movement(Vector3 _position, Vector3 _forward){ StartCoroutine(MovementCroutine(_position , _forward));}IEnumerator MovementCroutine(Vector3 _position, Vector3 _forward){ //다..
2023.10.20 -
1에 이어 사지가 극단적으로 꺾이는 모션을 추가하였으나, 뭔가 부족해서 떨림을 주어 역동적으로 만들고자 하였다. 현재 문제1. 몸이 꺾인 채로 추격을 하니 정적인 모습만 보여 공포감이 줄어드는 느낌이 들었다.개선 사항1. 몸과 가까운 부분만 매 프레임 회전값을 조금 주어 역동적인 움직임을 보여준다. 확실히 이렇게 쫓아온다면 더욱 무서울 것 같다는 느낌이 들었다. 구현//각 파트들이 감전된 듯 튕기는 효과public void TrembleBody(float rot){ if (parts.Length == 0 || CantTremble) return; Vector3 rotate = Vector3.zero; rotate.x = Random.Range(0.0f, 1.0f); rotate.y..
[게임 제작] 유니티 몬스터 기괴한 움직임 21에 이어 사지가 극단적으로 꺾이는 모션을 추가하였으나, 뭔가 부족해서 떨림을 주어 역동적으로 만들고자 하였다. 현재 문제1. 몸이 꺾인 채로 추격을 하니 정적인 모습만 보여 공포감이 줄어드는 느낌이 들었다.개선 사항1. 몸과 가까운 부분만 매 프레임 회전값을 조금 주어 역동적인 움직임을 보여준다. 확실히 이렇게 쫓아온다면 더욱 무서울 것 같다는 느낌이 들었다. 구현//각 파트들이 감전된 듯 튕기는 효과public void TrembleBody(float rot){ if (parts.Length == 0 || CantTremble) return; Vector3 rotate = Vector3.zero; rotate.x = Random.Range(0.0f, 1.0f); rotate.y..
2023.10.20 -
문제점- 몬스터의 사지가 꺾이는 듯한 기괴한 움직임을 주고 싶지만, 역동적으로 꺾이는 모습을 구현하기에 고민이 생김*시도해본 내용 1. 각 Rotate좌표에 있는 X Y Z의 값에 가중치를 주어 각 가중치에 맞게 회전시킴.//1. X Y Z에 대한 가중치를 설정한다.Vector3 rotateW = Vector3.zero;rotateW.x = Random.Range(0, 1.0f);rotateW.y = Random.Range(0, 1.0f - rotateW.x);rotateW.z = 1.0f - rotateW.x - rotateW.y;//2. 지정된 값에서 랜덤한 값으로 회전값을 지정한다.float r = Random.Range(0.0f,parts[i].degree);rotateW = rotateW * r..
[게임제작] 몬스터의 기괴한 움직임 표현 1문제점- 몬스터의 사지가 꺾이는 듯한 기괴한 움직임을 주고 싶지만, 역동적으로 꺾이는 모습을 구현하기에 고민이 생김*시도해본 내용 1. 각 Rotate좌표에 있는 X Y Z의 값에 가중치를 주어 각 가중치에 맞게 회전시킴.//1. X Y Z에 대한 가중치를 설정한다.Vector3 rotateW = Vector3.zero;rotateW.x = Random.Range(0, 1.0f);rotateW.y = Random.Range(0, 1.0f - rotateW.x);rotateW.z = 1.0f - rotateW.x - rotateW.y;//2. 지정된 값에서 랜덤한 값으로 회전값을 지정한다.float r = Random.Range(0.0f,parts[i].degree);rotateW = rotateW * r..
2023.10.20 -
1. 목적- 플레이어에게 공포감을 주기 위한 동작과 추격을 하며, 사운드에 반응하여 움직인다. 기능1. 몬스터의 추격의 순서는 플레이어, 전역사운드, 로컬사운드, 맵순회 순으로 진행된다.2. 추격은 AI Nav를 사용하여 SetDestination으로 지정한다.3. 플레이어가 DeadRange에 들어왔을 경우에는 Dead이벤트를 발생시킨다. 문제점1. Update 내에 조건문을 통해 매 프레임마다 추격대상을 업데이트함으로서, 추격에 있어 대상이 지속적으로 바뀜해결1. 플레이어를 제외한 조건문에서 지정한 목적지에 도착을 했을 경우에만 위치값을 업데이트 하며, 그렇지 않다면 업데이트 하지 않는다. 또한, 추격 대상에 도착했을 경우에는 딜레이를 주어 그 곳을 살피도록 한다.Player조건1. 플레이어가 숨..
[게임제작]유니티 몬스터 순회1. 목적- 플레이어에게 공포감을 주기 위한 동작과 추격을 하며, 사운드에 반응하여 움직인다. 기능1. 몬스터의 추격의 순서는 플레이어, 전역사운드, 로컬사운드, 맵순회 순으로 진행된다.2. 추격은 AI Nav를 사용하여 SetDestination으로 지정한다.3. 플레이어가 DeadRange에 들어왔을 경우에는 Dead이벤트를 발생시킨다. 문제점1. Update 내에 조건문을 통해 매 프레임마다 추격대상을 업데이트함으로서, 추격에 있어 대상이 지속적으로 바뀜해결1. 플레이어를 제외한 조건문에서 지정한 목적지에 도착을 했을 경우에만 위치값을 업데이트 하며, 그렇지 않다면 업데이트 하지 않는다. 또한, 추격 대상에 도착했을 경우에는 딜레이를 주어 그 곳을 살피도록 한다.Player조건1. 플레이어가 숨..
2023.10.15