유니티 가이아(Gaia)에서 터레인에 텍스쳐, 나무, 잔디 추가하기(spawn)(아래는 유니티의 유료 어셋 Gaia - Terrain & Scene Generator 의 튜토리얼을 요약 및 정리한것이다. 버전은 Gaia - Terrain Scene Generator v1.9.3.4 을 사용하였다)1)stamping을 이용해 지형을 추가한 터레인이다. create spawners는 터레인에 텍스쳐, tree, detail, 기타 게임오브젝트를 추가하는 과정이다. 2)Gaia Manager의 standard 탭에서 create spawners를 클릭한다.3)씬에 5개의 spawner가 생성된것을 확인할수있다. 먼저 texture spawner를 선택하고 4)texture spawner 스크립트의 하단에서 s..
유니티 가이아(Gaia)에서 터레인(terrain) 모델에 지형 추가하기(stamping)(아래는 유니티의 유료 어셋 Gaia - Terrain & Scene Generator 의 튜토리얼을 요약 및 정리한것이다. 버전은 Gaia - Terrain Scene Generator v1.9.3.4 을 사용하였다)1)씬에 터레인 모델을 생성하려면 gaia manager의 standard 탭에서 create Terrain & Show Stamper를 클릭한다.2)씬에 stamper와 터레인이 생성된것을 확인할수있다.3)기본적으로 터레인은 유니티의 터레인 시스템을 사용하며 터레인레이어가 생성된것을 확인할수있다.4)기본 터레인 모델에 지형을 추가하려면 먼저 아래와 같이 stamper에 지형 텍스쳐를 추가한다. 지형 ..
유니티에서 가이아(Gaia) 설치 및 기본 메뉴 살펴보기가이아는 터레인을 쉽고 빠르게 제작할수있게 해주는 유니티 에셋으로 아래 웹사이트에서 툴의 장점과 특징들을 살펴볼수있다.https://assetstore.unity.com/packages/tools/terrain/gaia-terrain-scene-generator-42618 (아래는 유니티의 유료 어셋 Gaia - Terrain & Scene Generator 의 튜토리얼을 요약 및 정리한것이다. 버전은 Gaia - Terrain Scene Generator v1.9.3.4 을 사용하였다)1)유니티에서 새 프로젝트를 생성하고 가이아 에셋 패키지를 임포트한다. 2)임포트한 Gaia는 window 메뉴의 procedural worlds에서 확인할수있다. ..
Unity에서 collaborate를 활용하여 프로젝트 클라우드 백업하기유니티의 collaborate는 팀 작업시 클라우드 환경에서 프로젝트를 저장, 동기화, 공유할수있게 하기위해 고안되었다. collaborate를 이용하면 프로젝트를 클라우드에 백업하고 업데이트할수있다.1)테스트를 위해 새 프로젝트를 생성하였다(에셋 패키지를 추가하려면 add asset package를 클릭하여 추가)2)새로운 오브젝트를 생성하고 씬을 구성 및 씬을 저장한다. 새로운 에셋을 임포트하고 project settings를 변경하는 등 게임 프로젝트를 진행하였다.3)unity collaborate의 설치 유뮤, 버전을 확인하기위해 package manager로 이동한다.4)목록에서 unity collaborate를 확인할수있다..
UNITY에서 렌더 텍스쳐(render texture) 사용하는 방법아래 스크린샷에서 유저가 캐릭터를 선택하면 사용자 메뉴(UI)의 특정 영역에서 애니메이션을 실행하는 3D 모델을 확인할수있다. 렌더 텍스쳐를 활용하면 캔버스에 영역을 설정하고 이 영역에 카메라뷰에서 보여지는 씬을 렌더링 할수있다.1)캔버스에 panel를 생성하였다.2)예시에서 사용할 피사체로 캐릭터(sphere)와 새로운 카메라를 생성한다.3)렌더텍스쳐에 렌더링할 카메라뷰의 구도를 아래와 같이 구성하였다. 4)프로젝트에 render texture를 생성한다.5)render texture의 속성을 설정한다.6)이 렌더 텍스쳐를 위에서 새로 생성한 카메라의 target texture에 참조시킨다.7)ui에서 위 카메라뷰를 렌더링할 영역을 위..
unity에서 sprite packer를 사용하여 드로우콜(batches, setpass calls)을 줄이는 방법개별적으로 존재하는 텍스쳐를 아틀라스에 모아(packing) 이미지의 불필요한 공백을 줄이고 렌더링 프로세스에서 한번에 처리하여 드로우콜 수치를 낮출수있다.1)먼저 텍스쳐의 타입을 sprite로 변경한다(텍스쳐를 선택하고 import 세팅에서 sprite 타입을 선택, apply를 클릭하여 반영한다)2)동일한 방법으로 sprite packer를 사용할 모든 텍스쳐를 스프라이트 타입으로 변경하였다.게임을 플레이하여 드로우콜 수치를 확인한다. 이 수치가 높으면 렌더링 프로세스에서 프레임레이트에 영향을 끼친다.3)sprite packer를 활용하여 이 수치를 낮출수있다. 유니티의 editor se..
유니티 기본 쉐이더(particles standard surface)카메라 근접 오브젝트를 페이드 아웃시키는 쉐이더1)유니티에서 1인칭 플레이어의 시점 카메라가 씬의 오브젝트에 아주 근접하면 아래 두번째 이미지와 같이 클리핑된다.2)일반적으로 이것은 카메라의 clipping planes에서 near, far 수치를 입력하여 조절할수있지만 오브젝트를 통과할때 클리핑된 단면이 확인되는것은 개선할수없다.3)위 문제는 particles의 standard surface 쉐이더가 제공하는 옵션인 camera fading으로 개선할수있다. 새로운 재질을 생성하고 해당 쉐이더를 선택한다.4)블렌딩 옵션의 rendering mode를 transparant로 선택하고 camera fading에 체크한후 near, far ..
유니티에서 SceneManager.LoadScene를 사용하여 씬 로드하기1)현재 씬을 저장한다(scene_01)2)새로운 씬을 생성한다(new scene)3)씬을 구성하고 저장한다(scene_02)4)상단의 file메뉴에서 build settings를 선택한다.5)add open scenes를 클릭해서 씬을 추가한다.6)아래 스크립트를 추가한 게임 오브젝트가 씬에 존재하면 게임을 시작하고 3초후에 "scene_02" 씬을 로딩한다. 함수에서 씬 이름 대신에 인덱스를 사용하여 해당 씬을 로드할수있으며 SceneManagement 네임스페이스 사용을 선언해야 해당 함수를 사용할수있다.
유니티에서 마우스 클릭 이벤트에 의한 OnMouseDown 함수 호출하기1)씬에서 게임오브젝트를 생성한다.2)마우스 클릭 이벤트에의해 함수를 호출하려면 오브젝트는 콜라이더를 가지고있어야한다.3)이 게임오브젝트의 스크립트에서 이벤트함수인 OnMouseDown를 선언하였다.4)게임을 플레이하고 씬에서 게임 오브젝트를 클릭하면 함수가 호출된다.
유니티에서 레이캐스팅하고 hit 정보 아웃, 출력하기 특정 위치(origin)에서 특정 방향(direction)으로 최대 길이(max distance)의 레이를 캐스팅하여 레이가 콜라이더에 닿으면 true를 리턴한다.이때 hit에 대한 더 많은 정보를 out를 확인할수있다(RaycastHit)레이캐스팅에의해 타겟 오브젝트의 이름, hit포인트, 거리, 노말을 출력해보았다.길이 제한없는 레이를 캐스팅하려면 maxDistance 인수에 Mathf.Infinity를 넘긴다.
유니티에서 SendMessage 메서드를 사용하여 게임 오브젝트에 메시지 보내기(GameObject.SendMessage)1)씬에 스피어(sender)와 큐브(receiver)를 생성하였다. 2)메시지를 받는 오브젝트(cube)의 스크립트에서 함수를 선언하였다. 정수 타입의 파라미터를 받아서 출력한다.3)메시지를 보내는 오브젝트의 스크립트에서 아래 코드를 추가하였다. 게임 실행중 사용자 인풋에 의해 target 오브젝트의 함수 printSomething를 호출한다. 4)위 스크립트를 스피어 오브젝트에 추가하고 target 오브젝트에 큐브를 참조시켰다. 5)게임을 플레이하고 사용자 키 입력을 하면(spacebar) 큐브 오브젝트는 값을 출력한다.
유니티에서 Instantiate 함수로 게임 오브젝트 복제하기Object.Instantiate - 오브젝트를 복제하는 함수로 유니티 기술문서에서 다양한 용법을 확인할수있다(https://docs.unity3d.com/ScriptReference/Object.Instantiate.html)Instantiate 함수는 오리지날을 복제하여 클론을 리턴한다. 기본적으로 에디터에서 게임 오브젝트를 duplicate(ctrl+d)하는것과 동일하며 인수를 추가하면 선택적으로 위치 및 회전을 명시할수있다.1)씬에 empty 게임오브젝트를 생성하였다.2)이 게임오브젝트에 아래 스크립트를 추가한다. Instantiate(prefab); 스크립트에서 참조하는 프리팹을 복제한다. Instantiate(prefab, new V..