Unity Engine (18) 썸네일형 리스트형 [Unity] 오브젝트 클릭과 터치 감지 구현하기 이 포스트에서는 유니티 엔진에서 오브젝트를 PC 환경에서 클릭 혹은 모바일에서 터치하는 방법을 알아본다. 2D를 기준으로 작성했다.IPointerDownHandler와 IPointerUpHandler먼저 오브젝트에 대한 터치를 구현하기 위해서는 위 두 인터페이스가 필요하다. UnityEngine.EventSystems에서 제공되는 인터페이스로 각각의 역할은 다음과 같다.IPointerDownHandler대상 오브젝트를 눌렀을 때 호출되는 콜백이다.IPointerUpHandler대상 오브젝트를 눌렀다가 뗐을 때 호출되는 콜백이다. 사용자는 이 두 인터페이스를 활용하여 오브젝트를 터치할 때의 동작을 구현할 수 있다. 하지만 단순히 이 두 가지 인터페이스를 사용한다고 할 수 있는 건 아니고 아래 설명할 준비를.. [Unity] 2D 오브젝트가 이동 중에 걸리는 현상 - Ghost Vertices 유니티에서 블럭맵 형태의 스테이지를 개발하고 캐릭터를 이동하다 보면 캐릭터가 바닥에 걸려 움직이지 못하는 경우가 생길 수 있다. 이 포스트에서는 이 현상의 원인을 찾고 해결하는 간단한 방법을 제시한다.Ghost Vertices이 문제는 이미 Ghost Vertices라는 문제로 알려져있다. 이 문제에 한정하여 정리하면 직사각형 형태의 충돌체(유니티에서는 Box Collider)가 새로운 모서리를 만날 때 캐릭터가 진행하는 방향에 대해 반작용이 발생하여 이동이 저지된다고 한다.유니티 엔진에서의 해결 방법 유니티 엔진에서는 캐릭터의 콜라이더를 박스가 아닌 다른 것으로 설정하여 쉽게 해결할 수 있다. 어떤 콜라이더를 쓰던지 반작용이 발생하는 것을 막으면 된다.더보기아래 링크에서 Ghost Vertices에 .. [Unity] 스프라이트 시트로 랜덤 파티클 만들기 유니티에서는 여러 개의 스프라이트가 한 이미지 파일에 들어있는 집합을 이용하여 무작위로 선택된 스프라이트 모양으로 파티클을 발생시킬 수 있다. 이 포스트에서는 스프라이트 시트를 구해 위와 같은 무작위 파티클을 구현하는 방법을 알아본다.스프라이트 시트 구하기무료로 스프라이트 시트를 다운로드할 수 있는 인터넷 사이트가 있다. https://www.pngwing.com/ko/search?q=%EC%8A%A4%ED%94%84%EB%9D%BC%EC%9D%B4%ED%8A%B8+%EC%8B%9C%ED%8A%B8 여기서 원하는 시트를 다운로드 하도록 하자.스프라이트 시트 생성하기 받은 이미지를 프로젝트에 넣고 인스펙터에서 Sprite Mode > Multiple로 설정한 뒤 Apply를 눌러 적용한다. 그리고 Spr.. [Unity] 스프라이트 뭉치로 애니메이션 만들기 유니티 엔진에서 여러 스프라이트를 연속적으로 재생할 수 있는 애니메이션을 쉽게 만들 수 있다.애니메이션 생성먼저 Sprite 프레임들을 준비한다. 그런 다음 애니메이션을 만들 스프라이트를 모두 선택한 후 유니티 에디터의 Hierachy 창으로 드래그 한다. 그러면 아래처럼 애니메이션 파일을 생성할 수 있는데 적당한 위치에 생성하도록 한다. 그러면 애니메이터와 애니메이션 클립, 그리고 씬에 오브젝트가 생성된 것을 볼 수 있다. 이벤트 추가와 제어 스크립트 작성여기서 특정 키 프레임에 이벤트를 발생시키는 애니메이션 이벤트를 추가할 수 있다. 추가하고자 하는 프레임에 우클릭을 하면 Add Animation Event를 생성할 수 있다. 스크린샷에서는 이미 이벤트를 하나 추가해서 이벤트가 하나 띄워져 .. [Unity] 유니티 오브젝트의 null 확인 Preface: UnityEngine.Object 유니티에서의 모든 게임 오브젝트는 UnityEngine.Object로부터 상속을 받는다. UnityEngine.Object는 유니티 엔진에서 생성된 C++ 내부 구현 객체와 C#에서 해당 객체의 포인터를 참조하는 인터페이스 클래스로 구성되어 있다. 여기서 C++은 unmanaged 언어라 프로그래머가 객체의 메모리 해제 시점을 결정할 수 있지만 C#은 managed 언어이기 때문에 메모리 해제를 GC에 맡겨야 하는 차이가 있다. UnityEngine.Object의 파괴 유니티로 코딩을 하면서 UnityEngine.Object(혹은 그를 상속하는)를 파괴하려고 하면 Destroy() 또는 DestroyImmediate()를 호출하게 된다. 이때 위에 언급한.. 이전 1 2 3 4 다음