본문 바로가기

Unity/제로부터 구현

(18)
Pentagon Balance UI 제작하기 캐릭터의 스텟을 받아와 오각형 밸런스 UI로 보여주기 위해 제작* 이번에 제작한 오각형 밸런스 유아이는 월드 스페이스에서 사용되게 제작.  1. 캐릭터의 스테이터스 5가지를 받으면, 각 스테이터스를 최대 스테이터스로 나눠 0 ~ 1 사이의 값으로 만들기.2. 오각형의 각 꼭지점 위치 계산하기 void CalculatePentagonVertices() { for (int i = 0; i 오각형을 만들 것이기 때문에 360을 5 로 나눠준 뒤 꼭지점을 가장 윗부분에 위치시키기 위해 18도에서 시작.각도를 레디안 값으로 변환 후 코싸인을 사용해 각 꼭지점 위치를 구합니다.  3. 오각형의 각 꼭지점 위치와 0 ~ 1 사이의 값으로 만들어 놓은 스테이터스를 사용해 매쉬 생성스테이터스에 ..
AssetPreview.GetAssetPreview() 로 얻은 텍스쳐 배경 투명하게 만들어서 저장하기 AssetPreview.GetAssetPreview() 란?AssetPreview.GetAssetPreview() 는 오브젝트의 프리뷰 이미지를 아주 간단하게 텍스쳐로 가져올 수 있는 Unity Editor에서만 사용 가능한 함수 입니다.기본적으로 AssetPreview.GetAssetPreview() 로 얻은 텍스쳐는 회색 배경의 불투명한 이미지를 만들어 줍니다.하지만 AssetPreview.GetAssetPreview() 로 얻은 이미지의 배경이 불투명하면 다른 오브젝트나 UI에 넣어 사용할때 불투명한 배경이 굉장히 다른 오브젝트나 UI의 그림을 방해하기 때문에 AssetPreview.GetAssetPreview()로 얻은 텍스쳐의 배경을 투명하게 만들어 볼 것 입니다. 1. AssetPreview...
MiniMap (2D) 탑다운 형식의 게임의 MiniMap 만들기 1. 카메라를 새로만들어 Projection 을 Orthgraphic으로 바꿔줍니다 카메라를 통해 미니맵을 만들 것이기 때문에 원근감없이 일정한 크기로 보여줄 것입니다 2. 카메라가 화면에 렌더링 되는것을 막아야 하기 때문에 카메라에 Target Texture에 랜더링된 텍스쳐를 넣어줄 것 입니다 폴더를 하나 만들어 Render Texture 을 만들어 줍니다. 3.새 레이어를 추가합니다, main Camera 에 Culling Mask로 랜더링할 레이어를 선택할 수 있습니다. Minimap 레이어만 해제해 줍니다. 새로 만들어진 Camera 에 Culling Mask는 Minimap 만 설정해줍니다. 새로 만든 카메라에는 Minimap 레이어만 랜더링하게 되고..
Cinemachine 을 사용한 카메라 이동 범위 제한 (2D) 1. Cinemachine VirtualCamera 생성 카메라 설정 카메라 범위 설정 2. Cinemachine Confiner Cinemachine Confiner를 추가하려면 Virtual Camera 인스펙터의 하단에서 Add Extension 드롭다운 메뉴를 클릭하고 CinemachineConfiner를 선택합니다. 3. 새 게임 오브젝트를 선택하여 이름을 CameraConfiner로 변경합니다. Polygon Collider 2D 컴포넌트를 추가해 줍니다. Polygon Collider 2D에서 Edit Collider를 눌러 맵 테두리로 설정해줍니다. 4. Cinemachine VirtualCamera 에 추가한 Cinemachine Confiner에 Confiner mode 를 2d 로 해..
플레이어의 정보를 로컬 저장소에 저장하기 (PlayerPrebs) PlayerPrefs는 로컬 저장소에 데이터를 저장하는 기능을 제공합니다. PlayerPrefs를 사용하면 게임 또는 애플리케이션의 실행 중에 데이터를 영구적으로 보존할 수 있으며 특정 키(Key)와 값(Value)의 쌍으로 데이터를 저장하고, 이를 로컬 저장소에 보관합니다. 저장된 데이터는 애플리케이션이 종료되어도 유지되며, 다음 실행 시에도 읽을 수 있습니다. 플레이어 데이터 클래스를 하나 생성해줍니다. 플레이어의 이름을 받아와 새로운 플레이어 클래스를 생성해주고 로컬 저장소에 이미 존재한다면 기존에 있던 데이터를 가져오고, 아니면 새로 만들어 줍니다. 플레이어의 정보를 저장하고, 가지고 올 수 있게 함수를 만들어줍니다. 1. 플레이어 데이터 클래스를 하나 생성해줍니다. [System.Serializ..
Meteor 구현하기(Shader,Particle 활용) 메테오 만들기. 1. 운석 shader 생성. Shader Graph Fragment 콘텍스트 Normal(Tangent Space) : 픽셀의 표면 법선(normal)을 나타냅니다. 표면 법 선은 픽셀의 방향을 결정하는 데 사용되며 빛의 입사 각도, 그림자 및 조명 효과 등의 계산에 중요한 역할을 합니다. Emission : 픽셀에게 추가적인 발광 혹은 광원 효과를 부여하는 데 사용됩니다. 2. 노드 생성 텍스처 셈플링 Sample Texture 2D Normal From Texture 텍스처로부터 법선(normal) 데이터를 추출하는 데 사용됩니다.일반적으로 텍스처는 색상 정보를 담고 있지만, Normal From Texture 노드를 사용하면 텍스처의 RGB 채널을 법선 벡터로 해석할 수 있습니다...
(2D)Enemy 정해진 영역에서 반복 이동 시키기(+Blend Tree) 오늘의 구현 정해진 영역 내에서 랜덤한 위치로 반복 이동시키기 + Blend Tree 를 사용해 애니메이션 적용시키기 이동 영역을 Enemy기준으로 반지름 n 만큼의 원으로 정하고, 랜덤한 레디언 값으로 접선좌표를 구해 Enemy가 그 지점으로 이동했다가 다시 원래 위치로 돌아오게 만들것입니다. lerp 함수에 보간값으로 대칭함수를 사용해 목표지점에 도달했다가 원래위치로 돌아오게 만들 것 입니다. 목표 지점으로 이동할때의 이동 방향을 구해 Blend Tree의 변수로 사용해 줍니다. 1. 적이 죽지 않았을경우 반복해서 이동 시킬것이며, 목표지점으로 갔다가 원래 위치로 복귀했을시 새로운 목표위치를 찾아 반복적으로 이동 시킬 것 입니다. 보간 함수 lerp는 대칭 함수를 사용합니다. 보간 값은 0부터 1 사..
플레이어를 기준으로 n크기의 반지름을 가진 원의 접선 그리기. 오늘의 구현. 플레이어를 중심으로 n 크기의 반지름을 가진 원의 접선 그려보기. 1.Debug.DrawLine() 을 사용해 반지름과, 접선 그려보기. 접선은 해당 점에서 원의 경계에 수직이며, 원의 중심을 지나는 직선과 평행합니다. 원의 접선을 구하기 위해서는 접하는 점과 원의 중심을 알아야 합니다. 해당 점과 원의 중심을 연결하여 구한 벡터는 원의 접선이 됩니다. 순서 원의 중심과 랜덤한 레디언값을 사용해 벡터를 구할 것 입니다. 레디언 값에 90도를 더한 각도를 사용하여, 원의 접선 벡터를 구합니다. 위에서 구한 벡터 값에서부터 원에 접선 벡터까지 기즈모를 그려줍니다. 1. 반지름을 2f로 설정하고, 랜덤한 레디언 값을 구해줍니다. 원의 중심은 플레이어의 위치 입니다. 레디언 값을 사용해 x,y 좌..