본문 바로가기

Unity

(65)
MonoBehaviour와 Unity 생명주기 1-1. Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요? 그 이유는 무엇일까요?Time.timsScale을 0으로 설정하면 게임의 시간을 멈춘 것으로 간주된다.Update 메서드는 프레임마다 호출되므로 Time.timeScale의 영향을 받기 때문에 호출되지 않는다.FixedUpdate 메서드 또한 고정된 시간 간격으로 호출되므로 Time.timeScale의 영향을 받기 때문에 호출되지 않는다.1-2. Update의 호출주기에 영향을 주는 것은 무엇일까요?프레임 레이트 - Update는 각 프레임마다 호출되기 때문에, 프레임 레이트(FPS)에 직접적으로 의존한다. 높은 프레임                          레이트에서는 더 자주 호출..
Tangreed Tangreed Yoonwoojoo/Tangreed (github.com) GitHub - Yoonwoojoo/TangreedContribute to Yoonwoojoo/Tangreed development by creating an account on GitHub.github.com 🕹️ 플레이 영상
내가 자주 사용하는 LayerMask 가급적이면 접근제한자를 public을 사용하는 것 보다는 private을 선호한다.그러다보니 LayerMask를 필드 초기화하는 과정에서 든 의문이 있다. LayerMask.GetMask("xyz")   vs   LayerMask.NametoLayer("xyz")LayerMask.GetMask("Player")용도 : 지정된 레이어 이름을 포함하는 레이어 마스크를 반환반환값 : 지정된 레이어 이름을 포함하는 레이어 마스크의 정수 값 (비트 필드) LayerMask.NameToLayer("Player")용도 : 지정된 레이어 이름에 해당하는 레이어 번호를 반환반환값 : 해당 레이어 이름의 정수 값 요약LayerMask.GetMask("Player"): "Player" 레이어를 포함하는 비트마스크를 반환La..
생동감 있는 몬스터 만들어 보기 게임을 진행하게 되었을 때몬스터가 가만히만 있다가 플레이어를 감지했을 때에만 추적하는 메커니즘이라면 이 것 만큼 단조로운 상황이 존재할 수 있겠는가? FixedUpdate를 사용해서 몬스터가 플레이어를 감지 할때까지 기다리는 방법보다는코루틴을 사용하여 몬스터를 제어함과 동시에 생동감을 넣어주는 방법을 생각해 봤다. Start메서드에서 UltimatedMove라는 IEnumerator를 호출하여 코루틴을 시작한다.알다 시피 코루틴은 여러 프레임에 걸쳐 실행되는 작업을 가능케 한다. ⓐ while (true)무한 루프이다. 코루틴이 중단되지 않는 한 계속 실행되도록 설계한다. ⓑ if (monsterMechanism.isGrounded)몬스터가 지면에 닿아있는지 여부 ⓒ monsterMechanism.IsP..
그래픽스 - 셰이더 셰이더가 무엇일까? 궁금해서 찾아 봤다 1. 렌더링 파이프라인 이해하기기준점 SpawnPoint (0,0,0)개별의 꼭지점 들을 Vertex이 Vertex들을 이어주는게 VertexShader 과정 및 Scene으로 배치Model : LocalPosition -> WorldPosition View : 카메라위치로 이동Perspective : 원근감2. PBR 렌더링이해하기 렌더링 방식 - 유니티 허브를 켜보면 여러가지 탬플릿이 있다.LWRP -> URP = 가벼운 파이프라인Built in 셰이더가 대세였지만 모바일 성능이 좋아지면서 URP HDRP를 주로사용HDRP는 일반적으로 콘솔게임용PBR Rendering = Physically Based Rendring = 물리 기반 렌더링3. Shader Gra..
궁수 키우기 [2D 방치형 모바일] 방치형 모바일 게임 -_- (youtube.com) Raising-Archer – FigJam (figma.com) FigmaCreated with FigJamwww.figma.com
Abyss-ascent 🌈 Abyss-Ascent 🌈플레이 영상
3D 카메라 타입 별 상호 작용 [ 3 가지 카메라 타입 ] [ 문제점 ] 현재 코드는 3인칭에서만 상호작용하고 있다.횡스크롤과 탑뷰에서도 상호작용하려면 어떤식으로 방향을 잡아야 하는가? [ 해결 방안 ]1. 레이를 생성하는 것을 고수하겠다고 하면, 카메라가 아닌 플레이어에서 레이가 나가는 방식으로 생각해봐야 한다.    그대신 Letter같은 상호작용 하는 물체는 굴러다니거나 하는 것 처럼움직이면 안됀다. 2. 충돌 처리로 상호작용 하는 방법이 있다.  2-1. 플레이어의 자식오브젝트로 게임오브젝트를 생성한다.  2-2. 자식오브젝트의 Renderer을 체크 해제하여 보이지 않게한다.  2-3. 자식오브젝트가 직접적인 충돌이 아닌 간접적인 충돌을 하게 하기위하여 Is Trigger를 체크
인벤토리 토글 해체 분석기 canLook의 자료형은 bool이며 초기값은 true로 할당LateUpdate() 에서 if(canLook)일 경우에 CameraLook()을 실행Tab키를 눌러서 인벤을 켰을 때, ToggleCursor() 메서드가 실행되는 상황  bool toggletoggle의 판단 기준 = 마우스 커서가 숨김상태인지 toggle = true 일 경우마우스 커서 숨김모드를 None으로 하여 커서를 보이게한다.마우스 커서가 보인다는 뜻은 인벤토리를 켰다는 뜻이다. toggle = false 일 경우마우스 커서 숨김모드를 Locked로 하여 커서를 안보이게한다.마우스 커서가 안보인다는 뜻은 인벤토리를 안켰다는 뜻이다. canLook = !toggle;레이트 업데이트에서 canLook이 true일 때에 CameraLo..
3D 어드벤쳐 만들기 ✈️ 프로젝트 소개 Unity3D의 캐릭터 이동과 물리 처리를 구현게임내의 여러 상태를 UI를 통해 사용자에게 표시다양한 게임 오브젝트와의 상호작용을 객체지향적으로 구현 💭 구현 기능           📓 기술 스택🕹️ 플레이 영상
플레이어를 움직이는 오브젝트에 동기화 하는법 beforeDirection 변수를 사용하는 이유는 현재 이동 방향과 비교할 수 있다. 플레이어가 움직이는 오브젝트의 움직임을 동기화하기 위함이 변수를 활용하여 현재 이동 방향이 이전과 동일한지 여부를 확인이를 기반으로 플레이어의 Rigidbody의 속도를 업데이트플레이어가 이동하지 않을 때, 즉 moveDirection이 Vector3.zero일 때도 beforeDirection을 통해 이전에 설정된 속도를 유지 움직임이 없는 경우에도 beforeDirection과 비교하여 필요할 때만 속도를 변경
코루틴 Coroutine [ Coroutin 정의 ]① Coroutine 은 Unity 에서 비동기적인 작업을 수행하기 위한 강력한 도구② 주로 사용 되는 곳 : 특정 시간 간격으로 반복되는 작업, 지연된 작업, 연속적인 애니메이션 및 이동 구현③ 일시 중단되고 다시 시작될 수 있는 기능을 제공 코루틴은 얼핏 눈으로 봤을 때 바동기적으로 보이지만, 함수 돌아가는 꼴을 보면 동기적이다 [ Coroutin 특징 ]① 비동기 작업코루틴은 다른 코드와 독립적으로 실행되며, 주로 지연된 작업을 수행하거나 반복적인 작업을 처리 ② 일시 중단 및 재개코루틴은 실행 중에 일시 중단되고 다시 시작될 수 있기 때문에, 코드가 실행되는 동안 대기하거나 지연을 일으킬 수 있음 ③ 쉬운 구현단순히 메서드 앞에 IEnumerator 형식의 리턴 타입을 ..