폭탄이 폭발했을 때 주변 오브젝트들과 상호작용할 때 사용하면 유용하다 Collider[] colliders = Physics.OverlapShere(폭발위치, 반지름); foreach(Collider col in colliders)을 이용하여 조리하면 된다 물론, 주변 오브젝트에 콜라이더가 달려있어야한다
ViewportToWorldPoint & WorldToViewportPoint 활용법 오브젝트가 화면(보여지고 있는 화면)에서 벗어나게 하지 않게 하고 싶을 때 사용하면 된다 이렇게 Cube오브젝트는 화면밖으로 나가지 않는다전 시간에도 말했다시피 ViewPort는 비율이므로 0~1사이 값으로 컨트롤한다Cube의 World Transform Position을 ViewPort 좌표계의 값으로 변환한다 그러면 ViewPort좌표계에 0~1비율 사이에 존재하게 되는데 이때 x좌표가 0 or 1을 벗어나려고 하면 최대치를 0과 1로 하여 화면에 고정시킨다 그다음으로 ViewPort좌표계의 위치를 다시 3차원의 좌표계 World 좌표계로 변환해준다 그거를 transform에 대입한다 ScreenToWorldPoin..
ScreenPointToRay에 대해 알아보자 우리는 모니터를 통해 3차원 게임을 바라본다 모니터는 2차원 (쉽게 설명하면 가로, 세로로만 이루어진)으로 되어 있는데 어떻게 2차원 모니터의 한 지점을 눌렀을 때 게임 환경인 3차원에서의 Point지점으로 갈 수 있을까? 일단 원리는 이러하다 카메라로부터 플레이어가 클릭한 위치로 Ray(광선)을 쏜다 현재 카메라에 보이는 화면을 관통해 뻗어나가는 광선은 지정한 길이에 도달하거나 오브젝트에 부딪히면 멈춘다 오브젝트에 부딪혀 멈추게 되면 오브젝트의 정보를 얻는다 내용이 이해가 가지 않으면 그냥 이렇게 생각하자 Mouse를 클릭한 곳에 뭔가의 Interaction을 취하고 싶으면 ScreenPointToRay이 녀석을 이용하면 된다~! (해석하면 카메라로부터의 ..
애니메이션 특정 클립에 Event 추가하기 원하는 프레임에 원하는 Events를 추가할 수 있습니다. 이때 주의할 점은 Function이름입니다. 함수 이름을 OnAttackCollsion으로 지었고, OnAttackCollsion을 실행시키고 싶다면 Event Function의 이름도 똑같이 해주어야 합니다. Animator컴포넌트와 실행시키고 싶은 Event Function이 담겨져 있는 스크립트 컴포넌트는 같은 곳에 있어야합니다.
뭔가 특수한 상황에서 카메라를 흔들고 싶은 연출이 필요할 때가 있지 않음? 그럴때를 위한 방법을 가져왔음! 먼저 싱글톤 패턴을 이용하여 다른 코드에서 손쉽게 접근할 수 있도록 해줘! 그리고 OnShakeCamera가 호출될 때마다 카메라가 흔들리게 할거야! 첫 번째 방법은 Camera의 Position자체를 움직이는거고! 두 번째 방법은 Camera의 Rotation을 바꿔주는거임! 나 같은 경우에는 칼같은 무기에 상대 Enemy가 닿으면 카메라가 흔들리게끔 설정했음! CameraShake.Instance아래 코드는 무시하셈~
Create new BlendTree in State를 눌러 블렌드트리를 만들자 플레이어가 왼쪽키를 눌렀을 때 왼쪽으로 향하는 듯한 애니메이션을 실행시키고 싶을 때 Blend Tree를 사용하여 애니메이션을 컨트롤한다 변수 Float로 Horizontal, Vertical 2개를 받는다 그리고 5개의 상태에 맞게 각각 Parameter값을 조정한다 코드를 생성해준다
연속적인 애니메이션에는 무엇이 있을까? 연속 공격, 연속 점프 등 있다 Animator창을 열어 Create Sub-State Machine을 선택하자 연속적으로 표현하고 싶은 애니메이션을 추가한다 Parameter는 Attack이라는 이름으로 Trigger를 하나 만들어준다 위에 두 사진이 핵심이다 잘봐야한다 먼저 Attack1 -> Attack2로 갈 때 Exit Time이 0.79로 설정되어 있는걸 볼 수 있다 Attack1 -> Base Layer로 갈 땐 Exit Time이 0.9로 설정되어 있다 Exit Time같은 경우 Has Exit Time이 체크되어야만 활성화되는 녀석이다 이 녀석이 0.9라는 뜻은 애니메이션이 90%로 실행되었다는 뜻이다 즉, 90%로 실행되기 전에는 Attack Tr..
먼저 Door 오브젝트와 빈오브젝트인 Pivot오브젝트를 생성해준다.Pivot오브젝트는 문의 Pivot에 놓는다. Pivot설정할 때 V누르고 하면 피봇 설정하기 매우 편하다.Door 오브젝트에 One Grab Rotate Transfomer컴포넌트와 Rigidbody를 만들어준다.각도를 설정해줘야 하는데, Constaints를 열어 설정해주면 된다(Pivot 오브젝트 Rotation을 돌리며 확인)이때 One Grab Rotate Transformer는 Grabbable의 One Grab Transformer에 할당해줘야 한다 + 추가돌리고자 하는 객체에는 One Grab Rotate Transformer와 Rigidbody함께!잡고 싶은 핸들에는 콜라이더만!그리고 자식 오브젝트 하나 만들고 거기에 ..
유니티 카메라를 눌러보면 Projection(투영방식) 탭에 2가지 선택지가 있다 1. Perspective 2. Orthographic persepctive멀리 있는 물체는 작게, 가까이 있는 물체는 크게 즉, 원근감과 공간감이 표현된 화면을 렌더링해서 보여줍니다 투영선(Field Of View)가 존재합니다(빨간색선) Orthographic투영선이 평행을 이루고 있다 따라서,멀리 있든 가까이 있든 실제 게임오브젝트의 사이즈로 보인다 즉, 원근감과 공간감이 따로 표현되지 않는다 투영선을 작게하면 화면이 좁아지지만 오브젝트는 커지고, 투영선을 크게하면 화면은 넓어지지만 오브젝트는 작아집니다. 즉 Zoom In / Zoom Out 개념을 생각하면 됩니다 정리Perspective : 원근법이 적용되는 3D ..
New Input System은 기존 유니티 Input System의 단점을 보완한 시스템이다 다양한 플랫폼에서 빠르게 컨트롤 설정을 변경할 수 있다! 기존 Inpuy System은 하나하나 코드로 수정해야했다.. 패키지 시스템에서 인풋 시스템을 임포트하자.그럼 이런 무시무시한 워닝 문구가 뜨는데 그냥 Yes누르면 된다. 그다음 프로젝트 세팅에 가보면 [Player] 창에 아래로 내려가다보면 Active Input Handling이라는 칸이 있는데 거기에 Input System Package(New)로 체크되어있을 것이다. 나는 Old버전의 인풋 시스템도 사용중이라 Both를 체크했다.그다음 프로젝트 폴더 아래 [+]버튼을 누르고 아래로 내려가다 보면 Input Actions가 생겼을거다. 눌러보자!이런..