전체 글 53

[Unity] CharacterController.Move 가 Update에서 동작하지 않는 현상

서론 최근 이상한 일을 겪었습니다. CharacterController.Move 가 Update에서 동작하지 않고 FixedUpdate에서만 동작하는 현상입니다. Google에서 검색해도 비슷한 현상에 대한 내용은 몇건 찾을 수 있었으나 정확한 내용은 없었고 FixedUpdate로 옮겼다는 글만 몇개 보았습니다. 원인은 단순한 문제가 복잡하게 얽혀 있었습니다. 1. 너무나도 높은 프레임 2. CharacterController의 Min Move Distance 값. Update Update는 가능한 호출할 수 있는 만큼 자주 호출되는 녀석이고 FixedUpdate는 고정된 주기로 호출되는 녀석 입니다. 따로 수정하지 않는다면 FixedUpdate는 0.02초마다 호출됩니다. Update는 부하가 심하지 ..

Unity Engine 2022.12.16

콘솔 게임 개발 과정에서 느낀점

콘솔게임을 개발하고 있으며 이 과정에서 느낀점. PlayStation4, XboxOne(8세대) 생각보다 CPU의 성능이 낮고 한계에 일찍 도달합니다. 그래픽은 눈을 조금만 낮추면 할만 합니다. 그래픽을 좀 낮게 잡는다고 생각하면 메모리는 생각보다 널널합니다. 디버깅이 생각보다 잘 되지 않아서 로그심고 보면서 하거나 크래시의 경우 덤프보는것이 빠른 경우가 많았습니다. 프로파일러는 플랫폼 제공이 있고 유니티가 직접 붙을수 있는데(예전에는 안됐었던것 같음) 직접 붙는게 좀 편한 느낌. PlayStation5, XSX/XSS(9세대) 보통 8세대 게임기와 같이 개발하게 되는데 같이 개발하게되면 상대적으로 엄청난 성능에 놀라게 됩니다. 그렇다고 PC마냥 엄청난건 아니고 어디까지나 8세대 대비 좋은 성능. 욕심 ..

기타 2022.12.03

유용한 공식 - 직선에 대한 한 점의 직각 좌표 구하기

제목이 약간 애매한데 그림을 보시면 이해가 빠르실 것입니다. 화면 하단에 플레이어가 있습니다. 플레이어의 forward는 붉은색 직선 입니다. 우측에 적이 있습니다. 플레이어의 forward기준으로 직각이 되는 녹색 직선을 구하는 - 정확히는 녹색직선과 붉은색 직선의 교차점을 구하는 내용 입니다. 이 내용을 찾아보게 된 것은 실제로 필요 해서였고 붉은색 직선을 기준으로 좌우로 데미지가 약해지는 등의 기획에서 쓸 수 있습니다. Collider를 분리하면 되지 않냐고 할수 있겠지만 Collider를 적게 쓰는것이 서버와의 협업에 좋았기 떄문에 이러한 공식을 찾게 되었습니다. 우선 이름을 정하자면 A : 플레이어 B : 목표 C : 교차점 모든 계산은 A를 기준으로 처리 합니다. void Start() { V..

Unity Engine 2022.11.10

[Unity]CollisionFlag - CharacterController

객체가 현재 어떻게 충돌하고 있는지 판단하는 방법은 여러가지나 CharacterController를 사용하고 있다면 비교적 쉽게 판단 할 수 있습니다. CharacterController.Move()를 사용한다면 CollisionFlags를 반환하게 되는데 이것은 현재 어떤 충돌상황인지를 나타내고 있습니다. 우선 단순한 바닥을 만들고 그 위에 캡슐을 올리고 CharacterController를 붙여 줍니다. 기본형 객체를 만들면 Collider가 붙어있는데 그것은 제거해 줍니다. void Start() { _controller = GetComponent() as CharacterController; print("1 : " + _controller.collisionFlags); CollisionFlags ..

Unity Engine 2022.11.06

[Unity]Physics 와 Layer

충돌 처리를 하게 된다면 Physics를 많이 쓰게 됩니다. 크게 나누게 된다면 Raycast 와 Overlap 계열, Cast 계열이 있습니다. Raycast 한 점에서 직선 방향으로 빛을 쏴 지정된 거리까지 충돌하는 객체가 있는지 체크하는 용도로 쓰고 있습니다. 투사체가 어디에 충돌했는지, 혹은 바닥 높이가 몇인지 등등등 다방면으로 쓰이고 있습니다. Overlap 계열 Physics.OverlapSphere를 보면 위와 같이 표시 됩니다. Overlap 에서 가장 큰 특징은 충돌한 Collider를 반환 하게 됩니다. 정확히 이야기 하자면 내가 누구와 충돌했는지를 체크하게 됩니다. Alloc버전과 NonAlloc버전이 있는데 Alloc버전은 Collider배열을 반환합니다. NonAlloc버전은 Co..

Unity Engine 2022.11.01

Flutter - 이미지 선택

앱을 만들다 보면 갤러리(사진첩)에서 이미지를 선택해야 할 일이 생깁니다. 이 경우를 알아보겠습니다. 우선 필요한 패키지는 image_picker 입니다. https://pub.dev/packages/image_picker image_picker | Flutter Package Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. pub.dev 선택하는 방법 자체는 아주 쉽고 간단합니다. static Future PickImage() async { return await ImagePicker().pickImage(source: ImageSource.g..

Flutter 2022.10.11

Flutter - 파파고 번역 + 비동기 처리

파파고 번역 Flutter 에서 파파고 번역을 사용하는 방법 입니다. https://www.ncloud.com/product/aiService/papagoTranslation NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification www.ncloud.com 일단 파파고 API 등록을 합니다. 이것은 다른곳에도 많이 알려져 있기 때문에 간략히 넘어가겠습니다. Flutter에서는 기본적으로 http 에관한것이 없기 때문에 패키지 추가 해야 합니다. pubspec.yaml을 열고 http를 추가 해 줍니다. Flutte..

Flutter 2022.07.28

Flutter - showModalBottomSheet

화면 하단부에 임시로 잠시 뜨는 PC에서 팝업같은 처리를 하는 ModalBottomSheet를 알아 보겠습니다. flutter 기본 앱을 수정하여 floatingActionButton을 누르면 ModalBottomSheet가 뜨도록 하겠습니다. floatingActionButton은 화면 중앙 하단에 있는 +버튼 입니다. 이 버튼을 누르면 ModalBottomSheet가 뜨고 거기서 텍스트를 입력받으면 기본 화면의 "Sample Text"자리에 뜨도록 수정되는 간단한 구조 입니다. 일단 ModalBottomSheet에 뜰 위젯을 보겠습니다. import 'package:flutter/material.dart'; class BottomDialog extends StatefulWidget { final Fu..

기타 2022.07.14

Flutter - Asset 사용(Font, Image)

Flutter에서 폰트나 이미지 등을 사용하는 방법을 확인 해 보겠습니다. 일단 적당한 폰트를 받아서 assets/fonts 폴더에 넣어줍니다. 전 무료폰트인 구글의 NotoSerif를 받아서 넣었습니다. 기본폰트가 고딕계열이라 Serif계열을 쓰면 폰트가 바뀐것을 쉽게 알 수 있습니다. 이제 새로운 Flutter 프로젝트를 생성합니다. 여기서 화면 중앙에 문구표시되는 부분이 있는데 약간만 수정합니다. children: [ Container( width: 300, child: const Text( 'You have pushed the button this many times:', style: TextStyle( fontSize: 30, ), ), ), Text( '$_counter', style: The..

Flutter 2022.07.14