게임엔진

    [Unity] Input Action을 사용해야 하는 이유

    1. 플랫폼 간 제어를 쉽게 만든다. - 키보드, Xbox 컨트롤러, PlayStation 게임패드 등을 통해 동일한 작업을 수행하도록 개발하는 것이 더 수월 - 모든 장치를 일관되고 동기화된 상태로 유지 2. 편집기를 통해 Action Maps, Actions 등을 쉽게 편집할 수 있다. - 또한 현재 사용되는 입력들에 대해 한 눈에 파악할 수 있다. 3. 이벤트로 작동되기 때문에 Update()에서 계속 확인하지 않아도 되어 이산 입력에 최적화된다. - 단 스틱과 같은 연속 입력에는 폴링과 정기적인 업데이트가 여전히 필요 4. 런타임 중에 현재 활성화된 입력을 빠르게 확인할 수 있는 입력 디버거가 내장되어 있다. - 추가 샘플을 설치하면 플레이 하는 동안 화면에 게임패드/기본입력을 직접 시각화 가능 ..

    [Unity] Input Manager (키보드 입력, 마우스 클릭, 조이스틱 등)

    Edit-Project Settings - Input Manager카테고리내에서 확인 가능. Key: 실제 키보드 상의 키, 예) W, Shift, space bar 등 Buttons: 물리적 콘트롤러의 버튼, 예) Xbox One 컨트롤러의 X 버튼 등 Virtual Axis: 매핑되어 있는 버튼이나 키. Axis는 -1~1의 값을 받는다. (중립값은 0). Mouse delta (한 frame내 마우스를 움직인 정도)는 마우스의 움직임 정도에 따라-1보다 작을 수 있으며 1보다 클 수 있다. Input Manager에서 각 Axis의 설정값 설명 구분 설명 Name Axis 이름. 이 이름을 사용해서 Script에서 접근 가능 Negative/Positive Button 키보드의 키, 마우스/조이스틱..

    [Unity] 애니메이션 내 추가 버튼이 비활성화인 이유

    Add Property가 비활성화 되있는데 이는 대상 오브젝트를 선택 안했기 때문이다. 클릭하면 활성화 되는 모습

    [Unity] 타일맵에 콜라이더(충돌체) 추가하기

    플랫폼 게임을 만드는데 노란 공이 떨어져서 바닥에 닿으면 튕기게 만들고 싶다고 가정해보자. 노란 공에 물리효과를 주기 위해서 Circle Collider 2D 컴포넌트와 Rigidbody 2D 컴포넌트를 부착해주었다. 그리고 꽤 그럴듯하게 공처럼 튀기게 만들기 위해서 물리 머티리얼(Physics Material)까지 넣어주었다. 하지만 타일맵에 물리적인 컴포넌트가 아무것도 없는 상태이기 때문에 플레이를 시작하면 떨어지는 공은 타일맵을 그냥 통과해버린다. 타일맵 콜라이더 2D 컴포넌트(Tilemap Collider 2D Component) 이전 섹션을 진행해왔다면 하이어라키 뷰에 존재하는 타일맵은 게임 오브젝트하나로 존재하기 때문에 어떻게 콜라이더를 배치해야할지 난감할 수도 있다. 타일맵을 위한 콜라이더를..

    [Unity] 2D 게임의 기본 타일맵!

    예전에 RPG메이커를 사용했을 때는 맵이 타일(Tile) 방식으로 이루어져 있어서 타일 팔레트를 가져와서 마치 그림 그리듯이 원하는 타일을 칠해주는 방식으로 맵을 만들 수 있었다. 유니티 엔진을 처음 배웠던 5 버전에서는 이러한 기능이 없어서 2D 맵 오브젝트를 직접 배치하거나 타일맵 기능을 직접 구현해야만 했었다. 하지만 유니티 2017.2 버전에서부터 타일맵 기능이 유니티에도 추가되었다. 맵오브젝트를 배치할 필요없이 그림 그리듯이 맵을 만들 수 있다는 것은 굉장한 장점이다. 샘플용 간단한 타일맵 이미지를 다운받은 뒤, 타일맵의 사용법에 대해서 알아보자. 구글에서 적당한 리소스를 다운받아서 사용해도 좋다. 타일 팔레트(Tile Palette) 만들기 타일맵을 씬에 배치하기 이전에 먼저 타일맵을 색칠할 ..

    [Unity] (Rule Tile)룰 타일로 타일맵 자동 연결하기

    타일의 자동 연결은 어떻게? 같은 타일을 놓으면 오른쪽 십자가처럼 자동으로 연결되기를 바랄 수 있다. 하지만 유니티 타일맵 기본 기능 만으로는 같은 타일을 옆에 놓아봤자 왼쪽 십자가처럼 끊어진 십자가만 놓아지고 오른쪽 십자가처럼 만들려면 직접 일일이 배치를 해야한다. 유니티 2D 엑스트라(Unity 2D Extra) 타일을 자동으로 연결해주는 기능은 기본 타일맵에서는 제공하지 않고, 유니티 테크놀러지에서 만들어서 깃허브에 올려둔 별도의 기능인 2D 엑스트라를 임포트해서 사용해야 한다(링크에서 2D Extra를 다운로드 받으면 된다). 그리고 다운로드 받은 파일의 압축을 풀고 2d-extra-master 폴더를 프로젝트 뷰의 Assets 폴더 안에 넣어주면 된다. 룰 타일(Rule Tile) 유니티에서 같..

    [Unity] 이벤트 함수는 어떻게 실행되는 것일까?

    유니티엔진에서 ‘스크립트’를 작성한다고 하면, 보통 MonoBahaviour를 상속받는 클래스의 스크립트를 작성하는 것을 떠올릴 것이다. 그리고 자연스럽게 이 클래스 내에 Awake(), Start(), Update() 등의 메소드를 작성하게 된다. 심지어 비주얼 스튜디오 같은 개발 환경에서는 이런 메소드들에 대해 자동 완성도 해주고, 메소드 위에는 Unity 메시지라는 글자도 띄워준다. 이런 메소드들은 ‘Unity Event Function’, ‘Unity Message’ 또는 ‘Magic Method’라고 불린다. 그런데 생각해보면 이 메소드들은 MonoBehaviour 또는 그 부모 클래스로부터 상속받은 메소드도 아닌데, 어떻게 유니티가 알아서 찾아 적절한 타이밍에 호출해줄 수 있는 걸까? Send..

    [Unreal] UENUM 메타데이터 종류

    기본 // enum 명칭 별도로 가지기 위함) 검색할때 유용 UENUM(Category="") // 비트마스크를 사용하고 있는 UPROPERTY 타입 int형 변수랑 사용가능 UENUM(meta=(Bitflags)) // 시험중인 기능이고 비활성화 되있음 UENUM(meta=(Experimental)) // 에디터에서 보여질 명칭 UENUM(ScriptName="") // 툴팁을 생성해줌 UENUM(ToolTip) // 블루프린트랑 사용가능하게끔 설정 UENUM(BlueprintType) UI 전용 // 애님 블프에서 예) enum형 드롭다운에서 보여질 명칭 UMETA(DisplayName="abc") // 에디터에서 숨김 UMETA(Hidden) // 툴팁을 생성해줌 UMETA(ToolTip="abc")

    [Unreal] UENUM에서의 비트마스크 사용

    UENUM(Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EItemGradeInfo { // 일반 아이템 Common , // 레어 아이템 Rare , // 레전드 라이템 Legend, }; ENUM_CLASS_FLAGS(EItemGradeInfo); 사용 할 곳 예) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (Bitmask, BitmaskEnum = "EItemGradeInfo")) uint8 ItemGradeInfo = 0; void DoSomething(const EItemGradeInfo info) { if(EItemGradeInfo::Common & sta..

    [Unreal] UENUM 명칭 주기 (애님 블루프린트)

    다음은 애니메이션에서 사용하는 열거형이다 UMETA(DisplayName = "명칭") 을 옆에다 추가해준다 (바이너리 형태로 동작하는 메커니즘) #pragma once #include "CoreMinimal.h" UENUM(BlueprintType) enum class ECharacterState : uint8 { IDLE UMETA(DisplayName = "제자리"), WALK UMETA(DisplayName = "걷기"), RUN UMETA(DisplayName = "뛰기"), JUMP UMETA(DisplayName = "점프"), MAX }; 아래와 같이 한글이 깨져있다면 h 파일을 UTF-8로 저장하자 결과