Code
-
[Unity] 시네머신 (Cinemachine) 기초Code/Unity 2021. 11. 24. 16:20
회사 업무로 사용하게 되면서 공부한 것을 정리한다. 시네머신이란? 시네머신은 영화 촬영을 하는 것처럼 씬을 촬영하여 게임 화면상에 비추어주는 유니티 패키지라고 생각하면 된다. 시네머신 추가하기 에셋 스토어 혹은 패키지 매니저에서 Cinemachine 이라고 검색하면 찾을 수 있다. (추가하면 하단처럼 시네머신 도구함이 보임.) 시네머신의 이해 시네머신은 기본적으로 유니티상의 카메라 오브젝트를 생성하지 않고 가상 카메라를 이용한다. 가상 카메라는 유니티상에 생성된 카메라를 오브젝트를 이용하여 다양한 각도에서 비추어줄 게임상의 씬을 보여주도록 도와준다. 또한 가상 카메라는 각각 서로에게 영향을 끼치지 않으며, 유니티 카메라에도 영향을 받지 않기 때문에 자유로운 카메라 구성이 가능하다. 그러므로, 가상 카메라..
-
[디자인패턴] 싱글톤 패턴 (Singleton)Code/디자인패턴 2021. 11. 22. 17:34
싱글톤 패턴 전역변수를 사용하지 않고 객체를 하나만 생성하도록 하여, 생성된 객체를 어디든지 참조할 수 있도록 하는 패턴. 객체의 인스턴스를 오로지 1개만 생성하여 사용한다. 장점 1. 메모리 낭비 방지. 2. 원활한 데이터 공유. 단, 여러 클래스의 인스턴스에서 싱글톤 인스턴스의 데이터에 동시 접근하면 동시성 문제가 발생할 수 있다. 예시 public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } public..
-
[Git] Git 사용법Code/그 외 2021. 11. 22. 15:35
GitHub 소프트웨어 개발 프로젝트를 위한 소스코드 관리 서비스. 소스 코드 열람, 간단한 버그 관리, SNS 기능 등을 갖추고 있다. 관련 용어 커밋 (Commit) : 파일을 추가하거나 변경 내용을 로컬 저장소에 저장하는 작업. 푸시 (Push) : 파일을 추가하거나 변경 내용을 원격 저장소에 업로드하는 작업. 리모트 (Remote) : 서버 자체를 의미. 오리진 (Origin) : 주로 리모트 서버의 이름을 Origin으로 사용. 레파지토리 (Repository) : 리모트 서버 내에 구분되는 프로젝트 단위. 저장소라는 뜻을 가지고 있다. 브랜치 (branch) 시간의 흐름을 나누어 기록하는 방식의 작업 공간 개념이라고 보면 된다. 버전 유지를 하며 새로운 기능을 추가 및 버그 수정을 할 수 있는..
-
[JAVA] JVM / JRE / JDKCode/그 외 2021. 11. 22. 12:13
위의 그림에서 알 수 있듯, JRE는 JVM을 포함하고 JDK는 JVM을 포함한다. JVM (Java Virtual Machine) 자바가상머신 JVM은 자바 소스 코드로부터 만들어지는 자바 바이러니 파일(.class)을 실행할 수 있게 해준다. 플랫폼에 의존적이므로 리눅스의 JVM과 윈도우즈의 JVM은 다르다. 단, 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있다. JVM이 하는 역할 바이너리 코드를 읽는다. 바이너리 코드를 검증한다. 바이너리 코드를 실행한다. 실행환경(Runtime Environment)의 규격을 제공한다. (필요한 라이브러리 및 기타파일) 그러므로, JVM은 자바 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 만들어주며, 메모리를 효율적으로 관리하고 최적화..
-
메탈슬러그 중간과정 6 - backgroundCode/Winapi 2020. 7. 17. 00:56
* RendManager 와 DBManager 을 합쳐서 기반을 조금 더 단순화 시킨다. - 부피가 조금 더 큰 Manager 를 기반으로 다른 Manager를 함수부터 하나씩 옮긴다. - 메소드 분해의 이유 : 이후에 위와 같이 합치기 쉽도록. * 총알 vector 수정. - Run 함수와 Rend 함수를 ObjManager 로 합쳐줌. - m_DBobjiter++ 가 앞에 있으므로서 데이터가 있는 첫번째 iter (.begin() 된 순번째 iter) 가 검사되지 않고 넘어가는 문제. 후반 위치로 변경. - DBManager 와 RendManager 에 들어있는 vector 를 동시에 삭제시켜주어야 하는 문제를 ObjManager 로 변환하므로서 해결. - bullet 이 client 밖으로 나가거나..
-
메탈슬러그 중간과정 5 - backgroundCode/Winapi 2020. 7. 7. 01:07
애니메이션 구축 방법 1. 스프라이트 : 한번 그릴 때 다 그림을 바꿔 그려 움직이는 것 처럼 보이게 한다. 단점 -> CPU의 성능에 맡기면 일정하게 움직이지 않는다. => CPU 클럭수가 아니라 CPU 시간에 맞추어 움직일 수 있도록. (주로 60 프레임에 맞춤.) timegettime(); 함수 사용. => 컴퓨터가 부팅된 시간으로부터의 시간을 반환한다. (1초 = 1000) ex ) curtime = timegettime(); if (curtime = pertime >= 시간) { 스프라이트 위치 이동 prevtime 갱신. } 여기서 시간을 framdelay 로 느리고 빠르게 시간을 조절할 수 있다. ex ) if ( curtime = pertume >= 시간 * framdelay) framde..
-
메탈슬러그 중간과정 4 - backgroundCode/Winapi 2020. 7. 1. 00:36
플레이어 캐릭터의 Idle 상태 움직이게 하기. 플레이어 캐릭터가 메세지 for문을 돌 때 마다 Animation() 실행하면서 움직임을 반복. 1. 이미지를 담을 HDC 생성. 2. 이미지를 담을 HBITMAP 생성. 3. OLDBITMAP 생성. 4. HBITMAP 에 CreateCompatibleBitmap() 함수로 이미지를 이미지를 로드시킬 hdc 지정 5. HBITMAP 에 LoadBitmap() 함수로 비트맵 로드시키기 6. OLDBITMAP 에 SelectObject() 함수로 bitmap 교체시키기 7. TransparentBlt() 함수로 이미지 출력하기 8. SelectObject() 함수로 원래 Bitmap으로 바꿔주기 9. HDC와 HBITMAP delet..