본문 바로가기

Unity/Unity 스파르타

(38)
10주차 - 개인 심화 3D(NavMeshAgent.path.corners, NavMeshSurface , Animation Curve) 1. 이동 로직 수정하기 (NavMeshAgent.path.corners) 2. 숨겨진 문 상호작용 만들기 (NavMeshSurface) 3. 횃불 상호작용 만들기 (AnimationCurve) 1. 이동 로직 수정하기 캐릭터가 목표 지점으로 이동할때, 이동하는 방향이 아닌 도착지점을 바라보고 이동하는 문제점이 있었습니다. Navigation 으로 목표위치를 지정 해주고, 캐릭터의 방향을 단순히 목표위치에서 현재위치를 뺀 값을 노멀라이즈 해준 것으로 캐릭터의 방향을 결정 했기때문이었습니다. 또한 캐릭터의 행동을 UI를 통해 통제 할 것이기 때문에 마우스 클릭으로 목표위치를 정한뒤 바로 움직이는게 아닌 모든 행동이 끝났을때 사용자가 엔터키를 누르면 움직이게 만들 것 입니다 . 그래서 Navigation 에..
10주차 - 개인 심화 3D(Navigation, 이동 경로 시각화 하기) 1. 플레이어 이동 Navigation으로 로직 바꾸기 2. 이동 경로 시각화하기 1. 플레이어 이동 Navigation으로 로직 바꾸기 마우스 클릭으로 목표지점으로 이동만 하는 단순 로직은 중간에 장애물을 만나면 장애물을 피해 목표위치에 도달할 수 없음으로, 알고리즘을 통한 최단경로를 찾는 걸로 로직을 수정해 줘야 했습니다. 일일이 A* 알고리즘을 구현할 필요없이 이미 Navigation에 구현되어 있음으로 이를 사용해 플레이어의 이동 로직을 수정해 줍니다. 2. 이동 경로 시각화하기 이동 경로는 LineRenderer을 통해 그려줄 것 입니다. NavMeshAgent 의 path.corners 를 사용해 캐릭터의 이동경로를 배열로 받아와 이를 사용해 이동경로를 그려줍니다. 플레이어가 움직일 경우 Fi..
10주차 - 개인 심화 3D(움직임,구르기,대쉬,잔상) + Mixamo Tip 1. 마우스 클릭으로 캐릭터 움직이기. 2. 구르기 3. 대쉬 4. 잔상 효과(Mesh) 더보기 fbx에서 Materials - Location 에 Use External Materials(Legacy) 로 체크후 적용 한 뒤 다시 Use Embedded Materials로 적용시켜보기. 그래도 안되면 Textures - Extract Textrues 로 해당 fbx 에 텍스쳐를 받아와 수동으로 텍스쳐를 넣어주는 방법을 쓰면 해결. 1. 마우스 클릭으로 캐릭터 움직이기. 카메라에서 마우스 클릭지점으로 Ray 를 쏘고, 바닥과 Ray 가 만나는 지점을 hit 으로 저장해줍니다. Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out h..
디자인 패턴에 대한 고찰(2) - 옵저버 옵저버 패턴에 대해 알아보고 고찰해보자.. 옵저버 패턴은 객체 간의 일대다 의존성을 정의하는 디자인 패턴입니다. 이 패턴은 한 객체의 상태 변화가 다른 객체들에게 자동으로 알려지고, 이에 따라 관련된 객체들이 업데이트될 수 있도록 하는데 사용됩니다. 그렇기 때문에 항상 접근 방향에 대한 고민이 필요 합니다. 매니저급 클래스에서 특정 개체의 상태를 계속 체크하고, 상태가 변했을때 옵저버에게 전달하는, 주체에서 옵저버를 향한 접근방향의 경우 옵저버가 삭제되거나, 로직이 변경됬을 경우 매니저 클래스 또한 그에 맞게 로직을 변경해야하는 경우가 발생할 수 있습니다. 때문에 옵저버에서 주체를 향한 접근방식이여야 좀 더 번거로운 과정을 줄일 수 있습니다. 1. 옵저버 인터페이스를 상태를 확인해야하는 개체에 상속 시킵..
디자인 패턴에 대한 고찰(1) - 싱글턴 디자인패턴, 싱글턴에 대해 알아보고 이에 대해 고찰해 보자.. 싱글턴패턴은 인스턴스가 오직 하나만 생성됨으로 인스턴스의 유일성을 보장해 항상 동일한 인스턴스를 사용할 수 있습니다. 또한 전역적 접근으로 어디서든 동일한 인스턴스에 접근해 코드의 유연성과 확장성을 향상 시킬 수 있습니다 . 하지만 항상 주의 해야할 점은 싱글턴패턴의 클래스의 인스턴스는 무조건 1개만 존재해야하며 전역적으로 관리하기 때문에 싱글턴 패턴의 클래스가 많아질 수록 메모리 누수 문제와 성능상 좋지않은 영향을 줄 가능성이 높습니다. 일반적인 싱글턴 public class SingletonExample : MonoBehaviour { private static SingletonExample _instance; public static S..
9주차 - 포탈, 문 등장과 퇴장 1. 포탈 만들기 1. 만들어진 던전 방에서 랜덤으로 하나의 방에만 포탈 생성, 방에있는 몬스터가 모두 죽었을 경우에만 포탈 활성화됩니다. 2. 포탈을 사용하게 되면 메인 씬으로 이동합니다. 3. 포탈을 시각적으로 표현하기 2. 문 등장과 퇴장 던전 방의 클리어 조건을 달성하게 되면 문이 등장. 문을 통해 다음 방으로 이동했을때 해당 방의 클리어 여부에 따라 로직 실행. 문 등장과 퇴장은 코루틴으로 해결하기 문 등장 이펙트와 시각적으로 문이 활성화 되었다는 걸 보여주기 위한 이펙트 추가
9주차 - Procedureal Dungoen Generator + 미니맵 1.  Procedureal Dungoen Generator 어떤 방식으로 프로시저 알고리즘을 짤것인가던전의 생성 위치를 리스트에 저장하고, 리스트에 던전 생성 위치의 존재 여부를 판단해 던전을 생성 시키는 방법단순한 구조로 빠른 시일내에 구현하기위해 선택던전의 정보를 담은 던전룸 클래스 리스트던전을 생성할 위치정보를 담은 리스트던전의 생성위치를 사용해 던전을 그릴 타일맵 로직던전간 이동을 위한 문 로직2. 미니맵미니맵을 보여줄 카메라 만들기미니맵을 찍고 있는 카메라에만 보일 스프라이트 생성던전과 던전사이를 이어줄 라인 생성하기플레이어 위치를 시각적으로 보여주기, 탐색하지 않은 방 물음표 표시.1.  Procedureal Dungoen Generator 1.  사전 준비  1. 던전 매니저 만들어 던전 ..
8주차 - 밤낮 바꾸기 using UnityEngine.Events; UnityEvent OnTakeDamage; - 버튼 컴포넌트의 버튼 함수를 추가하는 것 마냥 이벤트를 추가할 수 있음 오른쪽 하단 Auto Generate Lighting Off 에서 스카이 박스와 Sun 설정을 할 수 있음. 1. 밤과 낮에 쓰일 Directional Light 를 만들어 줍니다. Light 에있는 Intensity(빛의 세기) 를 사용해 밤과 낮을 표현할 것입니다. 각각 밤과 낮에 쓰일 Light, Ligth 에 적용시킬 Gradient, 시간에따라 Intensity를 적용시킬 AnimationCurve를 준비해 줍니다. * AnimationCurve를 사용해 빛의 세기, 빛의 색을 모두 관리할 것이기 때문에 시간을 0 ~ 1 사이의 값..