목록Unity(유니티) (75)
Deff_Dev
이슈 사항 X축이 90도로 회전된 상태에서 상하, 좌우로 회전 시킨다면 x축만 회전되고, X축이 0도, 180도일 때는 상하는 X축 좌우는 Z축이 회전된다. 이 큐브를 스크립트에서 제어를 할 때, 값을 어떻게 넣어야 할까 ?해결이 문제를 해결하기 위해서는 유니티에서 오브젝트가 회전하는 방법에 대해 알고 있어야 한다. 회전할 때는 인스펙터 창에서의 Vector값을 이용하여 회전하는 것이 아닌 쿼터니언 값으로 회전하게 된다. Quaternion * Vector를 이용하여 회전시킬 값을 구하는 것이다. 여기서 Quaternion는 회전 시킬 값을 의미하고 Vector는 회전을 적용시킬 오브젝트의 회전 값을 의미한다.Quaternion currentRot = transform.rotation;Quaternion..
FSM유한 상태 기계 (Finite State Machine, FSM)유한한 갯수의 상태들로 구성된 기계 및 패턴을 만한다.상태와 상태 간의 전환을 기반으로 동작하는 동작 기반 시스템구성 요소상태 (State) : 시스템이 취할 수 있는 다양한 상태전환 조건 (Transition Condition) : 상태 간 전환을 결정하는 조건동작 (Action) : 상태에 따라 수행되는 동작 또는 로직동작 원리초기 상태에서 시작하여 입력 또는 조건에 따라 상태 전환을 수행상태 전환은 전환 조건을 충족할 때 발생하며, 전환 조건은 입력, 시간, 조건 등으로 결정상태 전환 시 이전 상태의 종료 동작과 새로운 상태의 진입 동작을 수행예시 : 플레이어 상태상태 : 정지 상태, 이동 상태, 점프 상태 등전환 조건 : 이동 ..
public void StartNewStage() { // 위치 설정 transform.position = GameManager.Instance.StageManager.StartWaypoint.position; stateMachine.ChangeState(stateMachine.ChasingState); }게임을 시작하면 플레이어가 지정한 위치에서 시작하는 기능을 만들 때, 위와 같이 코드를 작성했다. 하지만 테스트를 해보니 플레이어가 해당 위치로 돌아가지 않았다. 한 프레임 당 실행을 했을 땐, 제대로 위치가 설정 됐지만 그냥 실행할 때는 시작 위치로 갔다가 다시 현재 위치로 돌아오는 이슈가 발생했다. 시작위치로 이동했다가 다시 돌아가는 이슈이므로 위의 코..
동적 생성이란 ?프로그램이 시작될 때, 미리 생성된 게 아니고 필요할 때 생성하는 것을 얘기한다. 동적 생성의 장점씬이 가벼워져서 씬 로딩이 빠름씬 변화가 없어서 Git 충돌이 거의 없음Prefab단위로 작업을 진행해 분업이 편리추후 대부분의 리소스 및 UI를 Addressable로 보내 빌드 용량을 낮추기 용이함와이어 프레임상 변경이 일어날 경우 간단하게 바꿀 수 있음동적 생성의 단점실행 시키전까진 확인이 어려움배치 변경 시 해당 프리팹을 찾아가서 일일이 수정해야함동적 생성의 활용랜덤 생성지정된 위치 생성UI 동적 생
파이프라인화면에 오브젝트를 그리는 과정을 제어하는 시스템으로, 단계적으로 나눠서 앞에 작업이 완료되면 다음으로 넘긴다. 조건에 맞는지 확인하고 다음 파이프(상태)로 이동시켜준다. 대략적인 과정 (세부적으로는 더 많은 작업이 있음)컬링절두체에 걸리는 것은 그려주고 절두체에 들어오지 않는 오브젝트는 성능 개선을 위해 그리주지않음렌더링카메라 절두체가 찍어준 화면을 2D 화면에 그려줌쉐이더 적용Shader : 작은 단위의 처리. 각각의 색상을 계산하기 위한 수학적 계산 및 알고리즘 포함현재 그림에 있는 것 처럼 초록색 공의 하나하나의 픽셀들의 각각의 색상을 계산, 빛이 반사되는 색깔도 계산Mesh 적용 : 개체의 모양을 정의각각의 색상 개선 까지 다 끝났다면 그것을 적용시켜 줄 모양을 정해줌현재 그림은 동그란..
Func반환 값이 있는 이벤트 함수이다. 사용하기 위해서는 Using System을 선언해야되고 아래와 같이 사용한다.Func operation 이런식으로 작성했을 때, operation은 float 형 변수 2개를 매개변수를 값고 float 값을 반환하는 함수를 구독할 수 있다.using System;using UnityEngine;public class Test : MonoBehaviour{ private Func test; private void Start() { test += Add; test?.Invoke(3.5f, 2.7f); } private float Add(float a, float b) { return a + b; ..
플레이어의 에임에서 레이를 쏴서 상호작용할 수 있는 오브젝트를 탐색하는데, 벽 뒤에 있는 오브젝트도 탐색이 되는 버그가 발생했다. Physics.Raycast(ray, out RaycastHit hit, maxCheckDistance, layerMask)기존의 코드는 에임에서 레이를 쏘고 layerMask에 일치하는 오브젝트를 hit에 저장한다.문제이 코드의 문제점은 간단했다.layerMask만 탐색을 하다 보니 default로 설정된 벽을 건너뛰고 그 뒤에 있는 상호작용 오브젝트를 탐색하게 되는 것이었다. 해결모든 레이어의 오브젝트를 탐색한 후, 레이어 비교를 통해 상호작용 오브젝트를 찾는 방법으로 수정했다.if (Physics.Raycast(ray, out RaycastHit hit, maxCheck..
Abandoned Asylum | 3D 도시 | Unity Asset StoreElevate your workflow with the Abandoned Asylum asset from Lukas Bobor. Find this & other 도시 options on the Unity Asset Store.assetstore.unity.com 위 에셋에 포함된 문 관련 오브젝트들을 사용하여 문 상호작용 기능을 구현해 보겠다.클래스 구성 및 오브젝트 탐색 문 상호작용 기능을 구현하기 위한 클래스 구조도이다.진행 중인 프로젝트를 기반으로 설명하므로, 클래스 구조가 다소 복잡할 수 있다. 입력 및 이벤트 실행 PlayerInputController에서 InputSystem을 이용하여 상호작용 키를 입력을 받..