전체 글 (61) 썸네일형 리스트형 11월 21일 TIL 유니티 렌더링 파이프라인 게임에서 그래픽을 렌더링하는 과정을 정의하는 시스템이다 다양한 효과와 기능을 제공하여 게임의 시각적인 품질과 성능을 관리한다 렌더링 파이프의 구성요소 Geometry:게임 오브젝트의 형상과 기하학적 정보를 나타냄 Shading:머테리얼과 셰이더를 사용해 오브젝트의 표면 속성과 빛의 상호작용을 정의함 Lighting:조명을 설정하고 빛의 영향을 받는 오브젝트를 조명 Rasterization:3D공간을 2D화면에 표시하기 위해 오브젝트를 픽셀로 변환 Post-Processing:렌더링 이후 추가적인 효과와 조작을 적용 렌더링 파이프라인 종류 Built-in Render Pipeline:유니티의 기본 렌더링 파이프라인으로 유니티 2018까지 사용 Universal Render Pipe.. 11월 20일 TIL Strategy 패턴 전략 패턴(strategy pattern) 또는 정책 패턴(policy pattern)은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다 전략 패턴은 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다 전략 인터페이스(Strategy Interface) 작성: 게임에서 사용될 모든 전략에 대한 공통 인터페이스를 정의 전략 클래스(Strategy Classes) 작성: 전략 인터페이스를 구현하는 여러 클래스를 작성 컨텍스트 클래스(Context Class) 작성: 컨텍스트 클래스는 전략 인터페이스를 멤버 변수로 가지고 있으며, 실행 시에 원하는 전략을 설정 전략 실행: 컨텍스트 클래스에서.. 11월 16일 TIL MVC 모델 MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있으며 이러한 "관심사 분리" 는 더나은 업무의 분리와 향상된 관리를 제공한다 모델: 데이터와 비즈니스 로직을 관리 뷰: 레이아웃과 화면을 처리 컨트롤러: 모델과 뷰로 명령을 전달 11월 15일 TIL 오버로딩과 오버라이딩의 차이 오버로딩 같은 이름의 메서드를 여러개 정의하는 것 메서드 이름은 동일하나 매개변수 순서, 개수, 타입이 다르게 정의 오버라이딩 상위 클래스에 정의된 메서드를 하위 클래스에서 재정의 상위 클래스와 동일한 이름, 매개변수, 반환타입을 가진 메서드를 하위클래스에서 재정의 하위 클래스에서 메서드를 변경 및 확장 11월 14일 TIL 포물선 구현 유니티에서 포물선 운동은 Transform과 Rigidbody를 이용해 구현할 수 있다 Transform으로 Rigidbody를 사용하지 않고 직접 움직이면 유니티 엔진의 한계없이 게임을 만들 수 있다.(여기서 말하는 한계란 유니티 물리 엔진을 활용하기 시작하면 복잡한 구현을 할 때마다 더욱 큰 난관에 부딪힌다는 말이다. 만약에 움직임을 addforce로 구현한다고 생각해보자, 이후 공기저항에 따른 이동속도 감소, 회전을 줘야할때 자체적인 스크립트가 아닌 유니티 Rigidbody 방식에서 해결하려면 미세한 컨트롤이 힘들어진다.) 하지만 이동 단위가 큰 경우 충돌 판정이 정상적으로 이뤄지지 않고 일반적으로 생각하는 물리적 결과와는 다른 결과가 나올 수 있으며 트리거 Enter 및 Collisi.. 11월 10일 TIL 확장 메서드 확장 메서드는 기존의 클래스에 메서드를 추가하는 방법이다 vector3에 대한 확장 메서드를 만든다고 가정해보자 public static class Vector3Extension { public static Vector3 SetX(this Vector3 vec, float x) { return new Vector3(x, vec.y, vec.z); } } 먼저 static 클래스를 만들어야 한다 확장 메서드는 정적 클래스 안에 있어야 한다 생성하고 싶은 메서드의 첫번째 매개변수는 this 확장하려는 타입으로 지정해야한다 이렇게 만든 확장 메서드는 다음과 같이 사용한다 Vector3 myVec = new Vector3(1, 2, 3); myVec = myVec.SetX(5); 11월 8일 TIL Collision contacts 충돌이 발생한 두 콜라이더 간의 접촉 정보를 담고있는 속성 충돌 시의 접촉점, 접촉면의 법선 벡터, 접촉점의 상대 속도 등의 정보를 얻을 수 있다 충돌 이벤트 발생시마다 해당 충돌에 대한 접촉 정보를 담고 있는 ContactPoint 배열로 업데이트 된다 contacts 속성을 사용하여 충돌 이벤트에서 접촉 정보를 추출하고, 이를 활용해 충돌에 대한 원하는 동작 (충돌 객체간 상대 속도 계산, 충돌 지점 효과 생성 등)을 수행할 수 있다 11월 7일 TIL 파티클 시스템 작고 간단한 이미지나 메쉬를 대량으로 표현하는 데 사용하도록 만들어진 시스템 파티클은 움직이도록 제어할 수도 있으며, 크기, 방향, 모양 등을 설정하여 눈이나 비가 내리는 효과와 같은 다양한 효과를 만드는 데 사용된다 이번 프로젝트에서는 총알 피격 부분에 불꽃 이펙트를 표현하기 위해 사용했다 기본 모듈 Duration: 지속 시간 Looping: 체크해제하면 반복 x Prewarm: 체크한 상태에서 stop, play누르면 이전 재생 상태에서 그대로 재생됨 Startdelay: 시작하고 n초후에 나타남 start lifetime: 생명주기 start speed: 스피드 , 화살표버튼 누르면 랜덤으로 줄 수 있음 start size: 사이즈 조절 3d start size:x,y,z축 별로 사.. 이전 1 2 3 4 5 ··· 8 다음