정적 콜라이더를 이동 또는 회전하거나 크기를 조정할 때마다  Unity 씬의  모든 정적 콜라이더의 볼륨을 계산하고 정보를 캐시에 저장한다. 한마디로 성능 저하가 일어나게 된다. 물체를 동적 콜라이더로 설정하면 캐시에 다시 저장하지 않기 때문에 물리 효과를 최적화할 수 있다. 

 

유니티는 콜라이더와 리지드바디 컴포넌트가 포함된 모든 게임 오브젝트는 동적인 것으로 간주한다콜라이더는 있지만 리지드바디 컴포넌트가 없으면 정적인 것으로 간주  

 

콜라이더만 있는 경우(정적 오브젝트)

위에 그림에서 박스콜라이더는 있지만 리지드바디는 없다따라서 유니티는 정적인 콜라이더 캐시를 프레임마다 다시 계산하게 된다다. 해결책은 아래와 같이 리지드바디를 추가하는 것이다. 

 

콜라이더와 리지드바디가 있는 경우(동적 오브젝트)

리지드바디 추가로 정적 콜라이더에서 동적 콜라이더 변경되었다. 추가로 물체가 아래로 떨어지는  

방지하려면 리지드바디의 Use Gravity 해제하면 원하는 결과를 얻을 수 있지만 이것은 부분적인 해결 방법이다이러면 물체가 중력에 반응하지 않더라도 물리력에는 계속 반응한다. 

 

키네마틱 리지드바디

나은 해결책은 Is Kinematic 체크하는 것이다. 이렇게 체크하면 리지드바디 컴포넌트가 키네마틱 리지드바디로 설정된다. 키네마틱 리지드바디는 물리력에 반응하지 않으며, 트랜스폼을 이용해 움직일 있다. 

'게임 엔진 > 유니티 엔진' 카테고리의 다른 글

macOS unitypackage까지 압축 풀리는 문제  (0) 2019.11.26
유니티 ARM64로 빌드하기  (0) 2019.09.18
Apply Root Motion  (0) 2019.09.15
글로벌 일루미네이션  (0) 2019.09.15
Multiple Sprite  (0) 2019.09.12
Posted by 소블리애
,

유니티 2017.4.16 이후 버전 부터 64비트 지원을 제공 함

 

64비트 아키텍처를 빌드하려면 Unity 프로젝트를 아래와 같이 설정 해야 한다.

 

  1. Build Settings(빌드 설정)에서 Android 플랫폼 옆에 Unity 기호가 있는지 확인하여 Android용으로 빌드하고 있는지 확인
  2. Player Settings(플레이어 설정)를 클릭

  3. Player Settings Panel(플레이어 설정 패널) > Settings for Android(Android용 설정) > Other settings(기타 설정) > Configuration(구성)으로 이동

  4. Scripting Backend(스크립팅 백엔드)를 IL2CPP로 설정

  5. **Target Architecture(대상 아키텍처) > ARM64 체크박스를 선택

  6. 평소대로 빌드

 

'게임 엔진 > 유니티 엔진' 카테고리의 다른 글

macOS unitypackage까지 압축 풀리는 문제  (0) 2019.11.26
Unity 물리 효과 최적화 방법  (0) 2019.09.27
Apply Root Motion  (0) 2019.09.15
글로벌 일루미네이션  (0) 2019.09.15
Multiple Sprite  (0) 2019.09.12
Posted by 소블리애
,

글로벌 일루미네이션(Global Illumination)

물체의 포면에 직접 들어오는 빛뿐만 아니라 다른 물체의 표면에서 반사되어 들어온 간접광까지 표현한다.

 

단점

매우 높은 처리량을 요구 함. 오늘날 PC로도 글로벌 일루미네이션을 완벽하게 구현하기 힘들며, 실시간으로 사용하려면 여러 제약과 대안을 함께 하용해야 함

 

베이크된 글로벌 일루미네이션

고정된 빛에 의한 간접광을 라이트맵으로 구워 게임 오브젝트 위에 미리 입힌다. 반영된 간접광 효과는 게임 도중에 실시간으로 반영되지 않는다. 실시간 글로벌 일루미네이션 보다 표현의 질과 런타임 성능이 더 좋다. 빛의 방향이 게임 도중이 달라져도 간접광에 반영되지 않는다. 게임 도중에 갑자기 주변이 밝아지거나 어두워지면 이질감을 느낄 수 있다. 

 

실시간 글로벌 일루미네이션

빛의 세기와 방향 등이 달려졌을 때 그 변화를 간접광에 실시간으로 반영한다. 실시간 글로벌 일루미네이션을 사용하려면 라이트 맵을 여러 방향에 대해 생성해야 한다. 그리고 여러 가지 경우에 대한 빛의 예상 반사 방향과 광원의 예상 이동 경로 등의 정보를 미리 계산해서 저장한다. 이렇게 미리 계산된 정보 덕분에 게임 도중 물체 표면에 들어오는 빛의 방향 등이 달라져도 간접광이 어떤 방향에 어떤 세기로 반사되어야 하는지 적응 비용으로 추측할 수 있으며, 광원의 변화를 실시간으로 간접광에 반영할 수 있다. 결론적으로 실시간 글로벌 일루미네이션을 사용해도 미리 계산해야 하는 정보가 있으므로 라이팅 데이터 에셋을 구워야 한다.

'게임 엔진 > 유니티 엔진' 카테고리의 다른 글

유니티 ARM64로 빌드하기  (0) 2019.09.18
Apply Root Motion  (0) 2019.09.15
Multiple Sprite  (0) 2019.09.12
마우스 입력을 감지하는 메서드  (0) 2019.09.12
Transition Duration  (0) 2019.09.09
Posted by 소블리애
,

스프라이트 시트

- 여러 이미지를 하나의 파일로 합친 것

스프라이트 시트

스프라이트 애셋을 Multiple로 변경하면 하나의 스프라이트 애셋을 여러 개의 개별 스프라이트로 잘라 사용할 수 있다.

스프라이트 인스펙터

- 편집할 스프라이트를 선택한 후 인스펙터 창에서 Sprite Mode를 변경한다.

- Apply 버튼을 눌러 변경 내용을 저장한다.

- Sprite Editor창을 연다.

 

스프라이트 에디터

- Slice버튼을 누르고 Type을 변경한다.(Grid By Cell Size)

- Pixel Size을 확인하고 Slice 버튼 클릭

- Apply 버튼을 눌러 변경 내용을 저장한다.

 

잘라낸 스프라이트(총 8개)

 

'게임 엔진 > 유니티 엔진' 카테고리의 다른 글

Apply Root Motion  (0) 2019.09.15
글로벌 일루미네이션  (0) 2019.09.15
마우스 입력을 감지하는 메서드  (0) 2019.09.12
Transition Duration  (0) 2019.09.09
Has Exit Time  (0) 2019.09.09
Posted by 소블리애
,

마우스 입력을 감지하는 메서드 3가지

  • Input.GetMouseButtonDown() : 마우스 버튼을 누르는 순간
  • Input.GetMouseButton() : 마우스 버튼을 누르고 있는 동안
  • Input.GetMouseButtonUp : 마우스 버튼에서 손을 떼는 순간

 

마우스 버튼 식별자 int 타입

  • 0 : 마우스 왼쪽 버튼
  • 1  : 마우스 오른쪽 버튼
  • 2 : 마우스 휠 스크롤 버튼 

 

각 메서드는 마우스 입력이 감지되면 true, 그렇지 않으면 false가 반환된다.

 

'게임 엔진 > 유니티 엔진' 카테고리의 다른 글

글로벌 일루미네이션  (0) 2019.09.15
Multiple Sprite  (0) 2019.09.12
Transition Duration  (0) 2019.09.09
Has Exit Time  (0) 2019.09.09
Audio Source  (0) 2019.09.05
Posted by 소블리애
,