Clolent

※ 카메라 Background 에서 색을 정해주는 것으로 멀리 있는 것의 이질감을 없앨수있다.


※ Vector3.Angle ( A, B ) 두 벡터의 사잇값을 반환한다. 문제 0~180의 범위밖에 알수없다.


※ 내적을 사용하는 두 케이스 : 빛 계산, 총알이 맞았는지 안맞았는지 


※ 외적을 하면 두 벡터에 직교하는 새로운 한 벡터가 나온다. 언제 쓰냐 ? 각도 구할때 !

'나'의 Forward = A

왼손 엄지 A 와 검지 B 를 외적하면 중지 C가 나온다.


※ 두 벡터를 외적한값과, 기본법선 벡터와 내적한 결과가,

 음수면 사잇각 + 180 도 양수면 그냥 사잇각


※ 외적을 하면 두 벡터에 직교하는 한 벡터가 나온다. 언제 쓰냐 ? 각도 구할때 ! 

왼손 엄지 A 와 검지 B 를 외적하면 중지 C가 나온다.


스카이 박스

우리가 게임상에서 보는 하늘은 사실 우리가 거대한 박스안에있고 그 박스가 구름모야을 가지고 있는거다.

세상을 찢어서 6방향에서 찍어서 붙이는게있고 주사위 전개도 모양마냥 이걸 Six Side 라고 한다. 

( DrawCull 이 6번 안좋다. )

Cubemap 이라고 해서, 6개의 이미지를 주르륵 붙여놓고, 이제 붙여넣는것 

그리고 기본으로 주어지는 하늘 Procedural


요즘엔 스카이 돔을 사용한다고 한다. 구 형태 안에플레이어를 가둬놓느다고 한다. TERA가 이 방식을 했다고 한다.

왜 이렇게했는가? 박스의 단점인 시간의흐름 ( 구름의움직임 ) 등을 표현하는 것이 불가능 하기때문이다.

돔 형식은 그냥 궁기 때문에 구를 돌리면 된다. 그래서 점점 채택되는 추세 ! 


즉 하늘은 돔 형태를 사용하는것이 유리하다. 그런데 왜 과거에 박스를 썻는가 ?

하드웨어가 딸려서....그리고 하늘에서 시간의 흐름을 굳이 표현할 경우가 많지 않았다.


http://www.custommapmakers.org/skyboxes.php

SKY 박스가 많이 있는 ( 이미지만 ! ) 사이트다. 개꿀


하늘 조정은 Window 에서 Lighting 에서 Scene 에서 조정이 가능하다.


Sky Box 만들기( Cubemap ) -> Material 만들기

Shader 에서 Sky box 중에서 원하는거 누르고, 비어있는 텍스쳐 부분에 원하는 이미지를 끌어다 넣으면 완성 ! 


Sky Box 적용법 

위의 Lighting 에다 Material 을 끌어 놓거나 Material 자체를 그냥 끌어다 Scene 에다 넣으면 된다.



안개 효과를 주자

안개효과는 기본적으로 비싼 편

입체감을 주기위해 굉장히 좋은 효과이다.

단 하늘에는 안개효과를 주루없어서 픽셀을 일일이 계싼해야하는데 괜찮은 쉐이더를 찾아서 적용을하자, 

구현하려면 힘들다. 우린 하늘이 박스형태인걸 알고있으니 그보다 조금 작은 박스를 한 만들고, 이 박스에

안개를 먹이면 하늘에도 안개를 먹은것처럼 그럴싸 하게 먹일것이다.


체크옵션 하나만 켜주는 걸로 끝난다. 

위에서 하늘 설정해주던 Lighting 부분에 Fog 가 있다. ! 

Linear < Exponential < Exponential Squared 더 비싸고 더 잘만들어진다.


Fog Density -> 안개의 세기 얼마나 진한지

Linear Fog Start , End  / 안객 시작디는 위치, 끝나는 위치 


음향효과를 주자

유니티는 기본적으로 FMOD 라는 오디오 엔진? 을 사용하고있다 그냥 가져다 쓰면된다. 

소리가 나는곳에서 소리 듣는쪽을 빼서 나오는 벡터를 로컬좌표계로 옮긴다. 

이걸 통해서 소리가 왼쪽에서 들렸느지, 오른쪽에서 들렸는지 판단이 가능하다.  

X가 양수라면 오른쪽이고 음수라면 왼쪽에서 난소리일것이다.


대부분 어떤계산을 할때 나르리준으로 즉 로컬좌표계로 끌어오면 계산이 편해진다.

확장자는 wave 를 추천합니다. 압축할때 유니티가 알아서 잘 압축해주기 때문.


음향을 조절하는데는 단 3가지가 준비한다.

Audio Souce : 클립을 관리하는 총 책임자

Audio Listener : 듣는 일 밖에 안함

Audio Clip : 음악 파일


관리해야할 채널이냐, 관리하지않을 채널이냐를 정해주어야 한다. 

그냥 Play 하거나 해서 하는건 관리할수가 있지만 PlayOneShot 은 내가 한번 실행하면 되돌릴수없다 관리불능.



3D 사운드를 위하여 폭탄이 터지는 위치에서 소리가 나게 하고싶다면 이 함수를 사용한다.


AudioSource.PlayClipAtPoint(clip, transform.position);

특정위치에서 소리가 나게하는것!


pitch 

소리의 높낮이 소리가 높아짐ㄴ신기하게 소리도 빨라진다. 동전먹을때마다 소리 올라가는것을 이걸 조절한것 !


Streo Pan

왼쪽에서 구분할건지 오른쪽에서 재생할건지


Reverb Zone Mix

울림을 얼마나 적용할 것인지


3D Sound Setings

일반적으로 Linear을 사요하게된다. 거리를 조절해서 어느정도 까지만 소리가 들릴건지, 퍼지기 정도

등등을 정해줄수 있다.


UI

캔버스의 하얀 테두리가 의미하는 바는게임뷰를 기준으로 어디에 보이냐는 거이다. 그런데 지금 Text 위치를 조절해서, 어느부분에 위칳도, 게임뷰가 크기가 바뀌면 글씨가 짤리는 문제가 생긴다. 이를 어떻게 해결해야할까?


※ 글자 폰트를 키웠더니 글자가 사라진다? Text 부분의크기를 충분히 키우지 않았기 때문이다.


씬전환

using UnityEngine.SceneManagement; 이친구를 Include 해주고, 

SceneManager.LoadScene("씬 이름"); 으로 불러올수 있다. 


Applicaion.LoadLevel은 Legacy 타입이다. 구 타입 ! 


0번 씬 즉 최초 신은 아주 가벼워야 한다. 반응성이 좋아야하니까 ! 

그럼 실제론 어떻게 하는가? 

코루틴을 사용해야 한다. 


추후 씬 처음 불러오고 로딩 등을 하면서 씬 불러오는것 추가 예정 




댓글 로드 중…

블로그 정보

Clolent - 커피물조절달인

최근에 게시된 글