본문 바로가기

유니티

(39)
[유니티셰이더]불 이펙트 업그레이드 대마왕님의 책 '유니티 쉐이더 스타트업'의 6부에서 나오는 불 예제를 후반부에 나오는 내용을 이용하여 업그레이드시켜본 소스입니다. 불을 표현하기 위한 이미지는 예제파일에 있는 불과 먼지를 그대로 이용하였고, 코드만 수정하여서 배경이미지와 함께 사용할 수 있는 불을 만들어 보았습니다. ​ 6부에서 제작한 불 이미지를 그대로 사용하면 문제점이 1. 배경에 불 이미지가 적용된 Plane의 '진한 사각형 그림자'가 나타난다. -> 전혀 불의 그림자라고 생각할 수 없는 이질적인 그림자가 생성됩니다. 2. 불이 왼쪽아래로 치우쳐져서 그려진다 3. 불의 위아래에 연산으로 인한 찌거기가 남는다 4. 불치고 너무 진하다(?) 이렇게 배경이미지와 6부의 불 이펙트를 함께 사용하면 정말 보기 이상한 현상들이 나타납니다. 이..
[유니티셰이더]홀로그램 + VCMask 유니티 쉐이더 스타트업 책을 읽다가 나온 홀로그램 코드에 저번 시간에 배운 내용들을 집어넣어, VCMask를 이용한 무지개빛(?)홀로그램을 만들었습니다. 책에 설명을 너무 쉽게 잘해주셔가지고 조금만 자세히 읽다보면 다양한 바리에이션으로 응용이 가능할거에요! ​ 왼쪽 위 홀로그램은 기본 홀로그램 코드에 NormalMap과 Sin(시간)함수를 더한것입니다! 보시면 구형 오브젝트에 바둑판모양에 숫자들이 적힌(피면 오른쪽 오브젝트처럼되는)이미지에다가 아래에서 위로 올라가는 가로방향 줄모양으로 홀로그램이 만들어지고 있죠. ​ 오른쪽 위 홀로그램은 평면 오브젝트에 VC마스크를 이용하여 다양한 색깔을 첨가한 결과물입니다. 마찬가지로 위로 올라가는 가로방향 줄무늬를 볼 수 있고, 시간흐름에 따라 색상이 바뀌는것도 포인..
유니티 넷플릭스 스타일UI - ScrollrectEx 응용 유니티를 이용한 프로젝트에서 화면의 크기보다 많은 공간을 필요로 하는 콘텐츠를 만들 때가 있다. 이럴때 주로 Scrollrect UI를 이용하여 페이지를 넘기며 정보를 확인할 수 있게 구성한다. 그 대표적인 예로 넷플릭스가 있는데, 넷플릭스는 스크롤을 위, 아래로 내리면서 콘텐츠가 담긴 그룹들을 선택할 수 있고, 해당 그룹에서 좌,우로 스크롤하면서 그 그룹에 속한 콘텐츠들을 확인하고 선택할 수 있다. ​ 하지만 유니티에서 기본적으로 제공하는 Scrollrect UI를 이용하면 넷플릭스와 같은 UI를 구현할 수가 없다. 기본적으로 마우스에서 발생하는 이벤트는 캔버스에서 가장 위에있는 오브젝트가 독차지하기 때문이다. 즉, 부모 오브젝트가 상하로 스크롤 가능하게 설정되었고, 그 안에 있는 자식 오브젝트가 좌우..
유니티 특정 시간동안 조건을 유지할 경우 특정 시간동안 조건을 유지할 경우 특정 시간동안 값이 변하지 않을 경우 ​ 원하는 함수를 실행하게 하는 코드를 작성해보았다. 이번에도 Rx프로그래밍인 UniRx를 기반으로 제작해보았다. 각 함수들에 대한 자세한 설명은 글 하단 참조하기! ​ 예제 -'조건'이 'false에서 true'가 되고 '2'초 후 계속 'true'일 경우 '함수'를 실행 '조건' -> Select 'false에서 true' -> DistinctUntilChanged '2' -> Throttle // Delay 쓰면 안됨!!! 'true' -> Where 함수 -> 'Subscribe' // User Detect Stream this.UpdateAsObservable() .Select(_ => 조건) .DistinctUntilCha..
[유니티] npc와 대화하기 UniRX UniRX를 공부한 김에 이를 이용한 npc와 대화 로직을 만들었습니다. 유니티 RPG게임이나 추리게임에서 유용하게 사용할 수 있는 코드입니다. 프로그램은 다음과 같이 구성하였습니다. ​ 1. NPC 가까이 가면 대화할 수 있음 ( InAreaNPC 메서드 ) 2. 스페이스바를 누르면 대화창이 뜨고 대화 시작 3. 대화문장은 한글자씩 천천히 출력됨 4. 만약 이를 기다리기 싫다면 스페이스바를 한번 더 눌려서 전체 문장을 한번에 볼 수 있음 5. 해당 문장을 보기 싫다면 스페이스바를 더블클릭하여 다음 대화로 스킵가능 6. 대화가 끝나거나 대화도중 npc영역에서 벗어나면 대화 끝 7. 대화가 끝나면 무조건 대화는 처음부터 시작 ​ 게임을 좋아하시는 분들이라면 익숙한 동작이시죠? 이를 구현하면 다음과 같습니다..
[유니티]공 이동거리 계산 프로그램 평지가 아닌 상황에서 공의 이동거리를 계산하는 프로그램을 제작하였습니다. 각도나 길이가 다른 5개의 판을 설치하고, 그 꼭대기에서 공을 굴러서 바닥에 닿는 순간 지금까지 공이 회전한 각도를 계산하여 공의 이동거리를 계산하는 프로그램입니다. 공의 지름은 1m로 설정했기에, 1바퀴 회전당 pi m씩 이동하도록 설정하였습니다. ​ ​ 환경 정보 중력가속도 : -9.81 m / s2 ​ ​ 오브젝트 정보 ( 단위- 길이 : m, 각도 : 오일러 ) 공 : 반지름 0.5 1번 판 - 길이 : 30, 각도 : 23 2번 판 - 길이 : 20, 각도 : 20 3번 판 - 길이 : 20, 각도 : 23 4번 판 - 길이 : 10, 각도 : 20 5번 판 - 길이 : 20, 각도 : 꼭대기에서 중간까지 23, 중간에서 ..
[유니티]오브젝트 순차적 색상변경 예제를 적용한 큐브들입니다. 아래 스크립트 적용시 'Z'키를 누르면 지정한 색깔 순서대로 오른쪽의 작은 큐브부터 색상이 변하게 됩니다. ​ ​ 해당 큐브 그룹의 계층창과 인스펙터창입니다. 이렇게 4개의 큐브를 하나의 게임오브젝트의 자식으로 설정하고, 부모오브젝트에 스크립트를 적용하였습니다. 소스코드 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test_CubeStream : MonoBehaviour { List MyColors = new List(); Dictionary MyCubes = new Dictionary(); //큐브들 int numberOfCube = 0; void Star..