게임엔진/Unity

    [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..

    [Unity] 강체 관련 Rigidbody / AddForce / AddTorque

    Rigidbody Rigidbody(강체)는 gameObject가 유니티 물리 엔진에 제어 받게 한다. 한마디로 힘과 질량을 갖고 움직일 수 있도록 하는 것이다. Mass : 오브젝트의 질량 Drag : 오브젝트가 받는 공기 저항 값 Angular Drag : 오브젝트가 토크로 회전 시 받는 공기 저항 값 Use Gravity : 중력의 영향 유무 Is Kinematic : 활성화 시 물리엔진의 제어없이 Transform으로만 조작됨 Interpolate : 오브젝트의 움직임 부드러움 옵션 처리 Collision Dectection : 오브젝트 충돌 감지 / 감지 옵션 처리 Constraints : 오브젝트의 움직임 고정 위는 대표적인 rigidbody의 프로퍼티이다. Unity Documentation..

    [Unity] 트랜스폼(Transform) 이동(Move)

    유니티 좌표계 프로그램마다 사용하는 좌표계가 다르다. 따라서 좌표계에 대해서 이해하는 것은 매우 중요하다. 유니티에서는 위치를 표현할 때 왼손 좌표계를 이용한다. X축은 빨간색, Y축은 초록색, Z축은 파란색(RGB순서)으로 표현. Transform.position Transform.position은 게임오브젝트의 절대좌표를 나타낸다. Transform.position에 Vector3를 대입하면 해당 위치로 이동. transform.position = new Vector3(x, y, z); Transform.localPosition Transform.localPosition은 게임오브젝트의 상대좌표를 나타낸다. 게임오브젝트의 부모가 있을 경우 부모로부터 떨어진 좌표를 나타낸다. 부모가 없을 경우에는 Tr..

    [Unity] 오브젝트의 활성화 상태 확인

    첫 번째의 경우 Pcube와 Cube가 모두 활성화 두 번째의 경우 Pcube는 활성화 Cube는 비활성화 세 번째의 경우 Pcube는 비활성화 Cube는 활성화 activeSelf - 스크립트를 적용한 오브젝트의 상태 activeInHierarchy - 스크립트를 적용한 오브젝트의 부모 오브젝트에 영향을 받음 //SetActive - 오브젝트 상태를 변경(bool) 오직 스크립트를 적용한 오브젝트의 상태를 확인할 경우엔 activeSelf 부모 오브젝트의 경우를 대비하여 오브젝트의 상태를 확인할 경우엔 activeInHierarchy 출처 : https://young-94.tistory.com/2

    [Unity] RectTransform 내 피벗 Top과 Bottom 설정

    rectTransform = RectTransform 변수 > GetComponent() 또는 GetComponent as RectTransform 가능 top = 상단 값 bottom = 하단값 rectTransform.offsetMin = new Vector2(rectTransform.offsetMin.x, bottom); rectTransform.offsetMax = new Vector2(rectTransform.offsetMax.x, top);