목록프로그래밍/유니티 (22)
게임 프로그래밍

스펙큘러 표현 공식은 다양하지만 가장 유명하고 전통적인 방식은 Phong반사 입니다. 이 공식의 기본 원리는 "내가 보는 방향으로부터 반사된 방향에 조명이 있으면 그 부분의 하이라이트가 가장 높다" 입니다. Blinn-Phong의 공식은 "시선 벡터와 조명 벡터의 중간값인 '하프 벡터'를 구하고, 이를 노멀 벡터와 내적한다." 그렇다하면 하프 벡터는 어떻게 구할 수 있을까요? 벡터의 특징중에 하나를 살펴보면 "길이가 같은 두 벡터를 더 하면, 두 벡터 사이의 절반인 각도가 나온다" 라는 특징이 있습니다. 이를 통해 하프 벡터는 "시선 벡터" 와 "조명 벡터" 를 더 하고 이를 normalize 해주면 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21..

모든 물체는 기울어질수록 반사가 심해집니다. 반사율은 재질에 따라 다르게 나타납니다. 역광이거나, 털이거나 반투명 재질을 가진 물체들은 이 현상이 매우 강렬하게 나타날수 있고, 재질에 따라 잘 안보일 수도 있습니다. 사진 분야에서는 이것을 Rim Light라고 부릅니다. 금속 재질은 비금속 재질보다 확연하게 반사율이 다릅니다. 이러한 반사 공식을 Fresnel(프레넬) 이라 부릅니다. 이 프레넬 공식을 구현해 림 라이트를 만들어 봅시다. Lambert 라이트에 대해서 잠깐 얘기해보겠습니다. "노멀 벡터와 조명 벡터의 각도가 같으면 밝고, 90도가 되면 어두워진다" 이었습니다. 1 2 3 4 5 struct Input { float2 uv_MainTex; float3 viewDir; }; cs input에..

hierarchy에서 특정한 Script를 컴퍼넌트로 갖는 오브젝트를 검색하고 싶은 경우가 있습니다. 그럴때는 ref:script경로 로 검색하시면 됩니다.

(2019.3.7f1 버전으로 하였습니다.) unity ads는 유니티에서 지원하는 보상형 광고 시스템 입니다. 아마 2018버전부터 별다른 작업없이 쉽게 넣을 수 있도록 된걸로 알고 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Advertisements; public class UnityAds : MonoBehaviour { void Awake() { Advertisement.Initiali..

유니티에서 c# 스크립트를 만들면 기본적인 틀이 있습니다. 우선 using UnityEngine이 추가 되어있을거고 Start 함수와 Update함수도 있을것 입니다. 이러한 틀(Templates)은 유니티에서 미리 정해진 것이고, 상황에 맞게 커스텀도 가능합니다. 우선 ScriptTemplates가 저장된 경로를 살펴봅시다. 기본 경로 : C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates 유니티 허브 : C:\Program Files\Unity\Hub\Editor\2018.3.13f1\Editor\Data\Resources\ScriptTemplates Mac : Macintosh HD ▸ 응용 프로그램 ▸ Unity ▸ Hub ..

유니티에서는 기본적으로 타일맵 기능을 제공하고 있습니다. 그러나 현재 만드는 게임에서 기본적으로 제공되는 타일맵으로 맵툴을 만들기에는 제한적인 기능이 많아 따로 커스텀 에디터를 만들어서 제작하고 있습니다. 그러므로 이 기능을 간단하게 정리해볼려고 합니다. Scene View에 Grid를 그리는 방법은 간단합니다. OnDrawGizmos 함수를 사용하면 Gizmos를 그릴수 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 using System.Collections; using System.Collections.Generic; using UnityEngine; public ..
유니티에 툴을 제작할려고 Custom Eidtor를 만들때 Undo 기능이 필요할때가 있습니다. 유니티는 이를 간단하게 제공하고 있습니다. Undo.RecordObject (myGameObject.transform, "Zero Transform Position"); myGameObject.transform.position = Vector3.zero; 이런 코드가 있을때 zero 포지션에 갔던 Object를 Undo시키면 원래있던 자리로 가게 될것입니다. Adding a component: Undo.AddComponent(myGameObject); Creating a new game object: var go = new GameObject(); Undo.RegisterCreatedObjectUndo (go..
유니티에서는 OnDrawGizmo와 OnDrawGizmosSelected를 이용해서 Gizemo를 그려 씬에서의 편집을 쉽게 만들 수 있습니다. 간단하게 사용 방법에 대해서 알아 보겠습니다. 1 2 3 4 5 6 7 8 9 using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void OnDrawGizmos() { Gizmos.color = Color.yellow; Gizmos.DrawSphere(transform.position, 1); } } Colored by Color Scripter cs 이렇게 OnDrawGizmos를 통해 이 함수안에 Gizmos 클래스안에 있는 것들을 사용하면 됩니다. ..