묻공러
'분류 전체보기' 카테고리의 글 목록

분류 전체보기

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 7-3

# KeyFrame Animation 필요 이유애니메이터가 제작하는 애니메이션 말고위치나 회전과 같은 컴포넌트를 활용하여애니메이션을 직접 제작해 사용해야 하는 경우에 사용된다 ex.나무를 패면 부서진 나무들이 튀면서 떨어지는 애니메이션, 특정한 이동 패턴으로 도는 새, TCG 장르에서 카드가 이동 및 회전하는 경우 # KeyFrame Animation 생성법1. Animation 창 켜기Window > Animation > Animation (단축키는 Ctrl + 6) 2. Hierarchy 창에서 객체를 선택한 후 Animation 창에서 Create 버튼 클릭Create를 클릭하면, Animation 파일과 StateMachine(AnimatiorController) 파일이 생성된다그리고 선택된 객체..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 7-2

# StateMachine의 필요성1. Animation Blending 코드 작업의 문제점 해결 가능Animation Blending을 이전에 배운 방식대로코드에서 일일이 다 하드코딩 하는 것은 다소 비효율적이고 유지보수가 어렵다 2. boolean 상태의 문제점 해결 가능boolean 상태로 상태관리를 하는 경우에는상태가 많아질수록 유지보수가 어렵다 # StateMachine의 단점동시에 2가지 이상 상태를 가질 수 없다ex. Moving + Skill01Casting # StateMachine 예시public enum PlayerState{ Die, Moving, Idle,}PlayerState _state = PlayerState.Idle;void Update(){ switc..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 7-1

# Animator Component 애니메이션을 사용하기 위해서는 Animator Component를 활용하면 된다Animation Component는 구버전 레거시이다 # AnimatorController 제작 및 설정원하는 폴더 위치에서 우클릭 Create > AnimatorController 선택하면 생성된다 AnimatorController는 언리얼의 애니메이션 블르프린트와 동일한 역할이다AnimatorController에서 Alt 키 누르고 왼쪽 클릭 상태로or 마우스 중간버튼 누른 상태로 이동 가능하다원하는 Node를 클릭 후, Inspector 창에서 이름을 포함한 세부 설정이 가능하다 # Animator 코드 기초 활용법AnimatorController의 Node 이름을 호출할 수 있다A..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 6-3

# 카메라 시점이 벽에 막히면 당겨주는 기능 구현해당 기능을 구현하기 위해서는CameraController 클래스의 LateUpdate에서Raycasting을 실행해서 특정 Layer를 감지하는 경우에카메라의 월드좌표를 조금 당겨주면 된다private void LateUpdate(){ if(_mode == Define.CameraMode.QuarterView) { RaycastHit hit; if(Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall"))) { // 벽이 있는 경우 float d..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 6-2

# 클릭한 위치로 캐릭터 이동하는 기능 구현- InputManager 클래스 코드 추가 및 수정기존 KeyAction 뿐 아니라 MouseAction 델리게이트 이벤트를 생성해서이를 활용하면 된다using System;using System.Collections;using System.Collections.Generic;using UnityEngine;public class InputManager{ public event Action KeyAction = null; public event Action MouseAction = null; bool _mousePressed = false; public void OnUpdate() { if (KeyAction != nul..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 6-1

# CameraComponent 옵션- Clipping Planes의 Near, Far절두체 Near, Far 수정 - FOV시야각 - Culling MaskLayer에 따라 컬링 - Target Texture카메라라 렌더링 한 화면을 실시간(매 프레임마다)으로RenderTexture로 저장 및 변환하는 기능ex. CCTV, 미니맵, 후방/측면 카메라,… # QuarterView 구현1번 방식)캐릭터에 MainCamera를 아래로 포함시키는 방식으로해당 방식은 회전할 때도 따라가는 상황이 발생한다게임에 따라 다르겠지만 일단 현재 실습에서는 원치 않기에 해당 방식을 사용하지 않는다 2번 방식)MainCamera에 붙일 CameraController에서 관리하는 방식으로Position, Rotation(Lo..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 5-6

# LayerMask- LayerMask 필요 이유 및 개념Raycasting은 연산 부하가 매우 크다이를 최적화하는 다양한 방법이 있다 복잡한 MeshCollider 대신 충돌용 Collider로 Raycasting을 하도록 하는 방식이 있다이 방식은 당연히 최적화를 위해 많이 사용되는 방법이지만Raycasting에서 해당 방식은 오브젝트가 많은 경우에 효과는 미비하다 그래서 모든 대상이 아닌 특정한 종류(대상)만 Raycasting을 하도록bitmask를 이용한 것이 LayerMask이다 - Layer 추가방법아무 오브젝트의 Inspector에서Layer를 클릭해 AddLayer를 통해 우리가 원하는 Layer 추가 가능하다 - Layer 설정방법Layer를 지정해주고 싶은 오브젝트의 Inspecto..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 5-5

# Raycasting 실전 활용 예시월드 카메라 위치에서 마우스가 클릭한 스크린좌표로 Raycasting을 해서오브젝트들을 탐지하는 경우를 코드로 구현하는 예시를 알아보자 주의할 점은마우스가 클릭한 스크린 좌표를 월드좌표로 변환해야한다2D(스크린)에서 3D(월드)로 변환하려면, 그 과정에서 z값이 필요한데near 값을 입력해주면 딱 시작 지점이 지정된다 이렇게 하면,카메라에서 마우스 포지션(월드)으로 방향이 나오게 된다해당 방향은 방향만을 활용하기위해 정규화를 진행하면된다if(Input.GetMouseButtonDown(0)){ Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 5-4

# Raycasting 종류1. Physics.Raycast: 하나만 감지2. Physics.RaycastAll: 모두 감지 # Raycasting 사용 예시- Raycast 버전Vector3 look = transform.TransformDirection(Vector3.forward);Debug.DrawRay(transform.position + Vector3.up, look * 10, Color.red);RaycastHit hit;if (Physics.Raycast(transform.position + Vector3.up, look, out hit, 10)){ Debug.Log($"Raycast {hit.collider.gameObject.name}");} - RaycastAll 버전Vecto..

게임 엔진 - 유니티/[루키스] 유니티

[유니티 Note] 섹션 5-3

# 투영3D에서 2D로 변환하는 과정을 의미한다Perspective를 설정하는 경우,z좌표를 활용해 원근감 표현을 렌더링 과정에 적용하고2D에서는 결과적으로 z좌표(깊이 값)는 없어진다 # Perspective Projection vs Othorgraphic Projection원근투영(Perspective Projection)은z 축에 따른 원근감을 유지해 그린다 직교투영(Othorgraphic Projection)은z축 크기 변화 없이 평면적으로 그린다 # 투영 과정"Local → World → View → Clip → NDC → Viewport → Screen" Local 좌표계와 World좌표계는단축키 x를 통해 직접 Scene 창에서 좌표축을 확인할 수 있다 Viewport 좌표계는Camera.m..