wookeee의 등록된 링크

 wookeee로 등록된 티스토리 포스트 수는 110건입니다.

[Unity] 유니티 : IgnoreLayerCollision 특정 레이어 충돌 무시 [내부링크]

문제 플레이어가 대쉬를 하던중 Enemy와 충돌하면 앞으로 가지않는 문제가 발생했는데 이는 개발 의도와는 다르기 때문에 대쉬를 하는중에는 Player 레이어인 오브젝트가 Enemy 레이어 오브젝트를 충돌무시하도록 해보겠습니다. 해결 IgnoreLayerCollision(Layer1,Layer2) //대쉬중 Player 레이어와 Enemy 레이어 충돌 무시 Physics.IgnoreLayerCollision(LayerMask.NameToLayer("Player"), LayerMask.NameToLayer("Enemy")); //대쉬가 끝나면 Player 레이어와 Enemy 레이어 충돌 Physics.IgnoreLayerCollision(LayerMask.NameToLayer("Player"), LayerM..

[Unity] 유니티 : ToString() 원하는 Color로 출력하기 [내부링크]

기본적으로 ToString()을 이용해서 UI Text에 출력하게되면 미리 Text에 설정해둔 Color값으로 출력이 됩니다 그래서 ToString()으로 출력되는 색을 변경하기위해서는 코드를 따로 작성해야하는데 ToString() Color 설정 damage.text += "" + newValue.ToString() + ""; 결과 Color를 지정해서 어떤 값이 ToString()한 값인지 한눈에 확인할 수 있습니다.

[Unity] 유니티 : ToString() 소수점 표시, 콤마(,)표시 [내부링크]

유니티에서 float 자료형을 출력해보면 소수점 7자리까지 표기해준다. speedUI.text = attackSpeed.ToString(); 다음 코드와 같이 작성하면 사진과같이 Text를 출력한다. 하지만 보통 저렇게 모두 표기하지않고 소수점 1자리나 2자리까지만 표기합니다. 소수점 자리 표기 소수점 1자리 speedUI.text = attackSpeed.ToString("F1"); 소수점 2자리 speedUI.text = attackSpeed.ToString("F2"); . . 이렇게 ToString의 매개변수로 "F1","F2" 등을 넣어주면 된다 0.4 밑의 소수점 자리는 출력하지않고 잘라내는 모습을 볼 수 있다. 재화나 큰 숫자의 경우 1,000 단위로 콤마(,)표시를 해주는게 가독성이 좋다 위..

[유니티 문제 수정] 활 조준 : 플레이어 화면 중심으로 회전 [내부링크]

마우스 우클릭으로 활을 조준하고 조준점으로 플레이어 회전을 하는 코드를 구현하던중 플레이어가 조준점을 바라보다가 움직이면 이상한곳으로 심하게 흔들리듯 회전하는 현장이 발생했습니다 Debug.Log(hit.transform.name); 혹시하는 마음에 Debug.Log를 출력해보았고 역시 플레이어가 찍히고있었습니다... ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, 1000)) { // hit지점의 x,y축만 받아와서 플레이어가 수직으로 회전하는것을 방지 Vector3 lookAtPoint = new Vector3(hit.point.x,transform.position.y, hit.point..

[Unity] 유니티 : 1. Action , 이벤트, event [내부링크]

1. Action Action 타입은 입력과 출력이 없는 메서드를 가리킬 수 있는 델리게이트(delegate)입니다. 델리게이트는 '대리자'로 번역되며 메서드를 값으로 할당받을 수 있는 타입입니다. Action 타입의 변수에는 void SomeFunction() 처럼 입력과 출력이 없는 메서드를 등록할 수 있습니다. 등록된 메서드는 원하는 시점에 매번 실행할 수 있습니다. 청소를 원하는 시점에 '대리' 실행하는 간단한 예시를 봅시다. 다음은 마우스를 클릭할 대마다 onClear에 등록된 메서드가 실행되는 예입니다. public class Cleaner : MonoBehaviour { Action onClean; void Start(){ onClean += CleaningRoomA; onClean += C..

[유니티] Invaild worldAABB. Object is too large or too far away from origin [내부링크]

AI와 플레이어 전투중 갑자기 이렇게 생긴 에러가 무수히 발생하였다 너무 멀리있는 오브젝트를 참조하려고할때? 또는 위치가 한계치를 넘었을때 발생하는 요류라고 한다 해결책 Edit->Project Setting ->Physics -> Contacts Generation ->Persistent Contact Manifold에서 Legacy Contacts Generation으로 변경 Persistent Contact Manifold 는 뭐고 Legacy Contacts Generation 는 뭘까? Unity3D - Physics Manager (silverwolf.co.kr) Unity3D - Physics Manager 프로퍼티: 기능: Gravity x, y, z 축을 사용하여 모든 Rigidbody ..

[객체지향] 객체지향 소프트웨어 공학 : 객체, 클래스 [내부링크]

1. 객체 객체는 실행되는 프로그램에 존재하는 구조화된 데이터의 덩어리로, 절차지향 프로그램에서 구조체로 선언된 변수 또는 배열에 저장된 값과 같이 생각할 수 있다. 즉 데이터를 객체라 불리는, 식별 가능한 분리된 개체로 만든 것이다. 모든 객체는 상태(state)와 행위(behavior)라는 두 가지 요소를 가지고 있다. 예를 들어 하천의 댐을 제어하는 시스템이 있다면 객체 : 댐 상태 : 수문이 닫힌 상태와 열린 상태 행위 : 수문을 여는 행위 로 예를 들 수 있다. 객체의 또다른 예로 급여 시스템에서 사원 개개인을 나타내는 객체 대학의 수강 신청 시스템에서 학생, 강좌, 교수를 나타내는 객체 공장 자동화 시스템에서 조립 라인, 로봇, 조립 부품, 완제품을 나타내는 객체 객체지향 프로그램을..

[객체지향] 객체지향 소프트웨어 공학 : 클래스 이름 붙이기 [내부링크]

객체지향 프로그램에서 가장 중요한 것 중 하나는 클래스를 찾아내는 일이다. 다음은 클래스에 이름을 붙일 때 주의할 사항이다. 단수형 명사 사용 - 클래스에 이름을 붙일 때는 Employee,Hospital,Doctor와 같이 영어 명사를 사용하되 단수형 명사여야 한다. 클래스는 객체, 즉 인스턴스를 모아놓은 것이라기보다 인스턴스들의 공통 속성을 정의한 것, 다시 말해 대표성을 지닌 유형을 정의한 것으로 단수형을 사용한다. 첫 글자는 대문자로 - 다른 인스턴스 이름이나 변수 이름과 구별하기 위해 클래스 이름의 첫 글자는 대문자로 하는 것이 좋다. 또한 두 단어 이상을 사용할 경우 단어 사이에 공백 없이 밑줄 문자(_)를 넣거나 뒤 단어의 첫 글자를 대문자로 바꾼다. 예를 들면 Part_Time_Em..

[Unity 3D] 유니티 3D 시네머신 기초1 : VirtualCamera 시점변환 [내부링크]

게임에서 시네마틱 영상이나 다양한 연출을 보여주고 싶을 때가 있는데 유니티에서는 기본적으로 제공하는 시네머신(Cinemachine)을 이용하면 카메라의 부드럽고 다양한 움직임을 쉽게 제어할 수 있습니다. 결과적으로 게임의 몰입도를 상승시키고 몰입감을 높일 수 있습니다. 이번 글에서는 유니티 시네머신 설치부터 기본적인 사용방법을 한번 익혀보겠습니다. 하나의 예시로 추격 등과 같이 주로 사용되는 연출을 위해 카메라를 플레이어 앞으로 고정시켜 보겠습니다. 이외에도 탑뷰(Top-View), 아이소 메트릭뷰(Isometric-View), 사이드뷰(Side-View), 등등 다양한 연출들이 가능해집니다 위 연출을 한번 구현해 보겠습니다. 1. Window -> Package Manager -> Packages:Un..

[백준][C++] 2884 문제 : 알람 시계 풀이 [내부링크]

문제: 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로..

[백준][C++] 14681 문제 : 사분면 고르기 풀이 [내부링크]

문제 : 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 정답: 풀이 1 #include int main() { int X,Y; scanf("%d %d",&X,&Y); if(X>0 && Y>0) printf("1"); else if(X>0 && Y

[Unity] 유니티 : 트랜지션 없이 애니메이션 작동시키기 [내부링크]

간단한 애니메이션을 필요로할때는 아무 문제 없지만 만약 플레이어 , 보스 등 다양한 상태를 가지고 있다면 많은 애니메이션을 필요로 할것입니다. 특히 많은 상태가 이미 있는 와중 새로운 상태가 생긴다면 모든 상태에 대해 새로운 트랜지션을 추가해줘야하는 일이 생깁니다. 실제 겪은 사례) 사전동작 없이 Dash만 하던 보스가 Dash를 하기전 DashReady라는 새로운 상태를 추가해주려고 했으나 Dash위치에 DashReady상태를 넣게된다면 트랜지션에 Conditions값들을 다 바꾸어줘야하며 애니메이션이 늘어날때마다 트랜지션을 계속해서 추가해줘야하는 상황이 발생 애니메이션 전환 - Unity 매뉴얼 (unity3d.com) 애니메이션 전환 - Unity 매뉴얼 애니메이션 전환(Animation trans..

[Unity] 유니티 : 프리팹 스크립트로 불러오기 [내부링크]

오브젝트를 생성할 때 생성할 프리팹을 받아와야 합니다 Resource 폴더에서 프리팹을 스크립트로 불러와서 사용하는 방법을 한번 다뤄보겠습니다. 일단 스크립트가 아닌 가장 쉽게 프리팹을 가져오는 방법입니다. 1.GameObject 변수 public 선언 후 프리팹 받아오기 public GameObject objectToThrow; private void Throw() { Instantiate(objectToThrow, attackPoint.position, cam.rotation); } Instantiate 함수의 첫번째 인자는 생성할 오브젝트 , 두 번째 인자는 생성할 위치 , 세 번째는 Quaternion 값입니다. 생성해줄 프리팹을 빈 GameObject 변수에 드래그 & 드롭해주면 됩니다. 2. ..

[Unity] 유니티 : Raycast LayerMask 다루기 [내부링크]

Raycast를 사용해서 물체의 정보를 받아오는 중 다른 오브젝트가 만약 중간에 있다면 ray를 관통해서 계속해서 정보를 받아오지 못하는 문제가 있습니다 이럴 때 중간에 물체가 있어도 계속해서 정보를 받아오고 싶을 때 쓰는 것이 LayerMask입니다. LayerMask를 이용해서 한번 물체를 검사해 보겠습니다. 먼저 Inspector창에서 Add Layer를 눌러 레이어를 하나 추가해 주겠습니다 저는 downhill이라는 레이어를 추가해 주었습니다. 스크립트로 레이어를 가져오는 방법은 여러 가지가 있습니다. 1. LayerMask.GetMask("레이어name") bool downhillroad = false; void Update() { downhillroad = Physics.Raycast(tran..

[Unity 3D] 유니티 3D : 그림자 갈라짐, 끊어짐 현상 [내부링크]

게임을 개발하던 중 구매한 에셋을 씬에 옮겨봤는데 다음처럼 그림자가 갈라져있었어요 에셋을 잘못 만든건가? 싶었는데 그게 아니라 면이 모두 하드엣지로 되어있어 일어나는 문제였습니다 하드엣지란? -면과 면이 부드럽게 이어져있지않고 끊어져있는것 그렇다면 왜 저런문제가 생길까요? 만약 파란색 큐브 오브젝트가 저렇게 작은 2개의 큐브가 합쳐져서 만들어졌다고 가정해보겠습니다. 빛과 수직으로 만나는 부분은 검은색으로 그림자가 생기지만 빛과 수평으로 접촉이 되지 않는 부분은 그림자가 생길까요? 빨간 부분은 그림자가 생기지 않게 됩니다. 즉 위 보이는 사진처럼 그림자 끊어짐 현상이 발생하게 됩니다. 눈으로 보면 오브젝트가 잘 붙어있지만 실제로는 면이 끊어져 있는거나 다름없습니다 이러한 문제의 해결법은 간단합니다. 해결법..

[프로그래밍] 표기법 : 파스칼 ,카멜 ,스네이크 [내부링크]

프로그래밍을 하면 변수명 ,함수명 등 사람마다 다양한 형태로 표기를 합니다. 주로 협업을 하는 그룹에서 통일되지 않는 표기법을 사용하면 문제가 될 수 있고 가독성을 더 높이기 위해서 사용되기도 하는데 표기법의 종류로는 파스칼, 카멜 , 스네이크가 있습니다. 1. 파스칼 -첫번째 문자와 뒤에 이어서 있는 단어의 첫번째 문자를 대문자로 표기하는 방법 -클래스나 구조체의 이름 , 함수 명을 표기하는데 주로 사용됩니다.-예시 : PlayerMove , AttackPoint... 2. 카멜 -첫번째 문자는 소문자로 표기하고 이어서 있는 단어의 첫번째 문자를 대문자로 표기하는 방법 -지역 변수와 함수의 매개 변수의 이름을 표기하는데 주로 사용됩니다. -예시 : groundDrag , jumpCount... 3. 스..

[Unity 3D] 유니티 3D : AddForce 이동구현(2) [내부링크]

저번에는 키보드로 단순하게 AddForce 이동 구현했었습니다. 여기서 추가적으로 오브젝트가 움직이는 방향으로 회전하게 만들고 바닥을 체크해서 Drag값을 제어해보겠습니다. 저번 결과물 큐브가 가만히 있으니 너무 심심해 보입니다 그래서 움직이는 방향이 앞이 되도록 코드를 한번 작성해봤습니다. transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(dir), Time.deltaTime * 10); Quaternion.Lerp 함수인자로 (Quaternion a , Quaternion b , float t)가 들어갑니다 회전시키려는 오브젝트를 첫번째 인자로 넣었고 두 번째는 입력에 따라 앞을 보게 하는 함수 LookRo..

[Unity 3D] 유니티 3D : AddForce 이동구현(1) [내부링크]

오브젝트 이동 구현에는 여러가지 방법이 있습니다. transform.Translate , addForce,CharacterController 등등 각자 장점과 단점이 있는데 transform.Translate : 움직일때 벽을 관통하는 문제 , 물리적 충돌에 대한 부분을 감안하지않아 구현이 번거롭다. AddForce : 미끄러지는 느낌 ,가장 자연스럽다 CharacterController : 자연스럽지 못하다 ,단 구현이 편리하다 큰 특징을 뽑아보자면 저정도가 될 것 같습니다 다른 의견이 있다면 댓글 달아주세요! 저번에 작성한 transform.Translate 이동 구현은 아래 글을 참고해주세요 [Unity 3D]유니티 3D : 방향키를 이용한 간단한 캐릭터 이동 구현 :: 매일개발자 (tistory...

[Unity 3D] 유니티 3D : 오브젝트 속도 확인하는법 [내부링크]

내가 지금 움직이고 있는 속도나 총알과 같은 발사체를 쐈을때 어느정도의 속도로 나가는지 확인하는 방법에 대해 알아보겠습니다. Rigidbody를 가지고있는 오브젝트가 움직인다면 Info를 통해서 Speed와 Velocity값을 확인할 수 있는데 게임 화면상으로는 확인이 불가능합니다 그래서 직관적으로 확인이 가능하도록 Text UI로 한번 확인해보겠습니다. 속도를 알기 위해선 먼저 Rigidbdoy를 컴포넌트에 추가해야 합니다. 1. 속도를 알고 싶은 오브젝트에 AddComponent -> Rigidbdoy를 눌러 추가해준다 2.Project 창 ->Create -> C#Script 를 눌러 빈 스크립트를 생성한다 *스크립트로 UI를 제어할때는 using UnityEngine.UI;를 입력해야합니다! te..

[Unity] 유니티 : 스크립트로 Text 제어 , 출력하기 [내부링크]

게임의 상태에 따라 Text를 바꿔 주어야 하는 경우가 많습니다 플레이어 체력 , 경험치 , 재화 등 스크립트로 간단하게 Text를 한번 제어해보겠습니다 1.Create -> UI -> Text를 눌러 텍스트 UI를 생성해줍니다 (UI에서 바로 Text가 없는경우 Legacy에 들어가면 있습니다.) 위치를 지정해줄건데 Pos X , Pos Y값으로 위치를 설정하면 디스플레이의 크기에따라 배치해둔 UI의 위치가 달라지기 때문에 어떤 크기라도 설정한 위치에 있도록 해줄겁니다. Text UI 클릭 -> PosX 왼쪽 상자 클릭하면 Anchor Presets가 뜹니다 컨트롤(Alt + Shift)를 누르고 원하는 위치를 클릭하면 텍스트박스가 해당하는 위치에 배치가 되고 디스플레이의 크기가 달라져도 계속 그 위치..

[Unity] 유니티 : 스크립트로 버튼 누르면 색 변경 [내부링크]

버튼에는 다양한 기능들이 있습니다 그중 버튼을 클릭했을 때 색이 바뀌는 기능을 한번 구현해보겠습니다. 그전에 버튼 Transition을 알아보자면 Normal Color - 버튼의 기본 색상 Highlighted Color - 버튼위에 마우스를 올렸을 때 지정한 색으로 변경 , 일종의 호버 역할 Pressed Color - 버튼을 눌렀을 때 잠깐 지정한 색으로 변경 Selected Color - 버튼을 눌렀을때 다른 곳을 누르기 전까지 지정한 색으로 변경 Disabled Color - 버튼이 비활성화되었을 때 지정한 색으로 변경 클릭했을 때 색이 바뀌는 방법으로 Selected Color에 원하는 색을 넣어주는 방법이 있는데 이 방법의 단점은 다른 곳을 클릭했을 때 다시 원래 색으로 돌아온다는 점입니다 ..

[Naver Search Advisor] 네이버 서치 어드바이저 : 수집보류 문제 해결하는 방법 [내부링크]

네이버 검색창에도 나의 블로그가 노출될 수 있게 서치 어드바이저를 통해서 웹 페이지 수집을 등록했다 약 1일정도 뒤에도 요청 완료였다가 2일 차 되는 날 확인해보니 저렇게 전부다 수집보류가 되어있다.. 수집 완료 언제 되나 기대했는데 첫 수집 요청이 보류가 되니까 상심이 크다 서치를 해봐도 상세한 방법은 가르쳐주지 않고 너무 대략적인 방법만 알려줘서 따라 못하겠네요 그래서 네이버 챗봇에게 물어봤습니다 먼저 수입 보류의 원인으로 "수집 요청한 웹사이트의 수집 여부를 판단하기 어려워 보류가 된 경우" 가 있다는데 아직 블로그가 유명하지 않아서 찾기 어렵다는 뜻인가? 스팸 사이트의 악용을 막기위해 무분별한 요청 완료는 수집 보류시키는 것 같다 그런데 다시 수집 요청을 하니 거의 2분만에 수집 성공이 됐다 무슨..

[Unity] 유니티 : 버튼이 안눌리거나 특정 부위만 눌리는 문제 [내부링크]

다른 버튼은 다 잘 눌리는데 유독 안 눌리는 버튼이 있거나 특정 부위만 눌리는 버튼이 있다... 예를 들어 게임 시작 버튼이 하단 부위만 눌린 거나 완전히 안 눌린다거나 아무리 봐도 전혀 문제는 없어보이는데 어디가 문제일까? 도저히 찝찝해서 못참겠다 해결해보자 위에 상단 , 중간을 눌러도 안 눌리다가 하단 부위를 누르면 버튼이 눌리는 모습을 볼 수 있다 종종 이런 경우가 있는데 원인은 버튼 클릭이 되는 부분이 캔버스의 다른 것에 의해 덮어져서 그렇다 나의 경우 텍스트 박스가 버튼의 하단 일부분을 남기고 대부분 가리는데 이러한 문제로 가려지는 부분은 클릭이 되지 않는 것이다 그러면 이것일 해결하려면 당연히 텍스트 박스가 버튼을 가리지 못하게 사이즈를 조절하면 되는 것이다. 이렇게 사이즈를 다시 조절하고 버..

[Unity 3D] 유니티 3D : OnCollision과 OnTrigger의 개념과 사용 [내부링크]

유니티에서 빠질 수 없는 기능 OnCollision과 OnTrigger 둘다 비슷해보이는데 무슨 차이가 있을까요? 공통점 오브젝트간의 충돌을 체크할때 사용되는 함수이다. 충돌하는 두 오브젝트가 컴포넌트에 Collider 를 가지고 있어야한다 . -두 오브젝트의 Collider가 Box Collider , Capsule Collider 등 어떤 형태로든 콜라이더를 가지고 있어야합니다. 하나의 오브젝트는 Rigidbody를 가지고 있어야한다. -충돌하는 오브젝트 중 하나는 컴포넌트에 Rigidbody 를 가지고 있어야합니다 차이점 둘 중 하나의 오브젝트는 Collider에 Is Trigger가 체크 되어 있어야한다 -Is Trigger가 체크되면 해당 오브젝트가 물리적으로 영향을 받지 않고 통과가 됩니다 O..

[Unity] 유니티 : 버튼 클릭으로 기하평균 내기 [내부링크]

기하평균은 무엇일까요? 먼저 산술 평균의 예로 각 반에 수학 점수 40점 50점 60점인 학생이 3명이 있을 때 이때 나오는 산술 평균은 50점이 됩니다 공식으로 보면 (40+50+60)/3 이 되는겁니다 엑셀 AVERAGE 함수를 통해 50점이 나오는 것을 확인할 수 있습니다. 반면 기하평균으로 구하면 몇 점이 나올까요? 엑셀로 한번 구해보겠습니다 엑셀 GEOMEAN 함수를 통해 49.32..라는 값이 나오는 것을 확인할 수 있습니다. 식으로 계산해보면 √40*50*60 이 됩니다 정리해보자면 산술평균과 기하평균의 계산식은 다음과 같습니다. 간편한 산술 평균을 두고 왜 기하평균이 쓰일까요? 만약 한국의 모든 사람들의 연평균소득을 계산해보자고 치면 90%의 사람들의 평균값은 약 3000만 원 이상이 될 ..

[Unity 3D] 유니티 3D : Tranform 오브젝트 관통 ,통과 문제 [내부링크]

플레이어 또는 오브젝트를 AddForce로 이동할때 오브젝트가 관통이 된다면 저번에 알려드린 방법으로 해결을 하면 되지만 transform.Translate 또는 position으로 이동을 하게될때 일정 속도 이상부터는 오브젝트가 관통이 되어 여러가지 방법을 써봤는데 그중 가장 간단한 방법을 알려드리겠습니다. 문제 - 두께와는 상관없이 벽을 그대로 관통하는 모습 - 속도가 느리다면 물체 통과하진 않는데 일정 속도부터는 물체를 통과 해결법 private bool wallcollision; //벽과 닿은상태 다음과 같이 변수를 선언해줍니다 벽과 닿았다면 true 닿지않으면 false를 시켜줄 계획입니다 WallCheck() 함수에서 Physics.Raycast를 통해 플레이어의 위치로부터 원하는 방향과 길이..

[Unity 3D] 유니티 3D: 쭈구려앉기, 기어가기 , 콜라이더(Collider) 코드제어 [내부링크]

게임에서 Ctrl을 누르면 앉기 , 기어가기 등은 기본적인 기능입니다. 유니티에서 이것을 구현하기 위한 방법 2가지가 있습니다 Ctrl을 입력받아 콜라이더(Collider)를 줄이거나 transform.localScale 자체를 줄여야 합니다. 사진에서 보이듯 콜라이더의 종류는 정말 다양합니다 대표적으로 3D에서 사용되는 콜라이더는 박스 콜라이더 , 캡슐 콜라이더 , 매쉬 콜라이더가 있겠습니다 1. 플레이어 or 오브젝트에 콜라이더를 하나 추가해준다 -저는 Capsule Collider를 추가하겠습니다 2. Edit Collider를 눌러 Height와 Radius 그리고 Center값을 적당히 조절한다 -저는 플레이어의 사이즈에 맞게 y값 0.5 , Radius 0.3 , Height 1로 설정했습니다..

[Unity 3D] 유니티 3D : 이단점프 OR N번 구현하기 [내부링크]

저번 글에서는 점프 1번만 하기를 구현했는데 이번에는 2단 점프 또는 N단 점프를 지정할 수 있도록 구현해보겠습니다. 한번만 점프하기는 아래 글을 참고해주세요! [Unity 3D]유니티3D : 점프 1번만 하기 구현 :: 매일개발자 (tistory.com) [Unity 3D]유니티3D : 점프 1번만 하기 구현 대부분의 게임에 들어가는 기능인 JUMP를 넣어보겠습니다. 오브젝트는 큐브나 캡슐 등 어떤 것을 사용해도 괜찮습니다 오브젝트에 Rigidbody 컴포넌트 추가 점프 기능을 추가할 오브젝트를 Hierarchy wookeee.tistory.com 애니메이션 코드는 나중에 다뤄보도록 하겠습니다 jumpPossible - 변수 선언함으로써 직접 점프 가능 횟수를 지정할 수 있게 해줬습니다. jumpCou..

[Unity 3D] 유니티 3D : AddForce 벽 관통, 뚫림, 오브젝트 통과 문제 [내부링크]

천천히 움직일 때는 문제가 없는데 뛰기 , 내려찍기 등 빠르게 움직일 때는 오브젝트를 통과하는 문제가 자주 발생합니다. AddForce로 이동할때 일어나는 오브젝트 관통 문제를 한번 다뤄보겠습니다 문제 원인 이러한 문제는 1프레임당 속도가 5cm 일 때 6cm 오브젝트를 통과하지 못하지만 10cm이라면 1 프레임당 10cm를 이동하기 때문에 오브젝트를 통과하는 것입니다. 해결방법 Rigidbody -> Collision Detection -> Continuous로 변경해줍니다 ⇒ Continuous Dynamic으로도 가능한데 성능에 큰 무리가 있기때문에 추천하지 않습니다. Interpollate란? 보간법(Interpollate)을 사용하면 고정된 프레임률로 물리학을 실행하는 효과를 부드럽게 처리할 수..

[Unity] 유니티 : 버튼 클릭으로 캔버스 활성화 비활성화(alpha,enable) [내부링크]

아마 게임에서는 퀘스트창 열기 닫기 ,아이템 정보 열기 닫기 ,옵션창 열기 닫기 등등에 캔버스를 활성화 , 비활성화 하는데 쓰일것입니다 저는 앱을 개발중인 앱에 이 기능을 적용해 버튼을 누를때마다 그에 맞는 페이지로 이동하도록 보겠습니다 먼저 결과물 입니다 게임시작 버튼을 누르면 0캔버스에서 0_1 캔버스로 그리고 게임 설명버튼을 누르면 sub_canvas라는 텍스트가 적힌 캔버스가 활성화가 되는것을 볼 수 있습니다 여러개의 씬을 만들어서 버튼을 누를때마다 씬 전환이 되는것보다 훨씬 자연스럽고 빠른 방법입니다. 그럼 방법을 알려드리겠습니다 1. Hierarchy 창에서 Ui -> Canvas를 눌러 Canvas를 생성해주고 생성한 Canvas의 하위에 Panel을 생성해줍니다. 2. Add Compone..

[Unity 3D] 유니티 3D : 카메라 움직임(회전)-FPS view [내부링크]

u대부분의 FPS게임 또는 3인칭 액션게임에서 마우스 움직임에따라 플레이어를 중심으로 카메라가 회전을 합니다 이번에는 그것을 간단하게 구현해보겠습니다 개인마다 선호하는 마우스 감도가 있기 때문에 mouseSensitivity 라는 변수를 선언하여 감도를 조절할 수 있게 해주었습니다. 마우스이동의 x값 y값을 저장할 변수 MouseY , MouseX 를 선언해주었습니다. MouseX += Input.GetAxisRaw("Mouse X") * mouseSensitivity * Time.deltaTime; MouseY -= Input.GetAxisRaw("Mouse Y") * mouseSensitivity * Time.deltaTime; 위 코드에서 보면 MouseX에는 값들을 곱하고 변수에 +를 해주었고 반..

[Unity]유니티 : 마우스 커서 안보이게 하기 [내부링크]

마우스 커서가 필요한 경우가 대부분이지만 1인칭 또는 FPS게임과 같은 경우 대부분 커서를 필요로 하지 않습니다 그래서 이번에는 마우스 커서를 안 보이게 해 보겠습니다. 코드는 정말 간단합니다 Cursor.visible = false 마우스 커서를 보이지 않게 해 줍니다 하지만 눈에는 보이지 않지만 커서는 움직이고 있는 상태가 됩니다 그래서 커서도 움직이지 않게 해 주려면 Cursor.lockState = CursorLockMode.Locked 다음 코드를 통해 고정을 시켜주면 됩니다! 없어진 커서는 ESC를 누르면 다시 볼 수 있습니다.

[Unity 3D]유니티3D : 점프 1번만 하기 구현 [내부링크]

대부분의 게임에 들어가는 기능인 JUMP를 넣어보겠습니다. 오브젝트는 큐브나 캡슐 등 어떤 것을 사용해도 괜찮습니다 오브젝트에 Rigidbody 컴포넌트 추가 점프 기능을 추가할 오브젝트를 Hierarchy 창에서 클릭-> Add Component -> Rigidbody 검색 후 추가 Rigidbody 컴포넌트를 추가해야 하는 이유는? -AddForce를 이용하여 Rigidbody에 힘을 가함으로써 오브젝트가 점프하는 듯한 효과를 주기 위함입니다 Add Force를 이용한 점프 기능 추가 아까 추가한 Rigidbody컴포넌트에 접근하기 위해 GetComponent 함수를 사용하고 컴포넌트 오브젝트를 변수에 할당해줍니다. 점프에 가할 힘 jumpForce , 점프상태 is_Jumped , 바닥과 닿았는지 ..

노트북 무선 네트워크(와이파이) 연결 안될 때 해결하는 법 [내부링크]

분명 방금까지 노트북을 잘 쓰고 있었는데 업데이트를 하고 난 이후부터 갑자기 무선 네트워크가 연결이 안된다.. 노트북을 키면 자동으로 네트워크가 잡혔는데 안잡히길래 눌러보니 Wi-Fi를 아무리 눌러봐도 눌렸다는 표시로 회색이 되기만하고 켜지지 않는다.. 여러가지 방법이 있는데 하나씩 알려드리겠습니다. 1. 네트워크 초기화 위 사진에 보이는 네트워크 및 인터넷 설정에 들어간다 -> 네트워크 초기화 ->지금 다시 설정을 누른다 이 방법으로 해결이 안되면 2. 네트워크 사용 안함 다시 네트워크 및 인터넷 설정 -> 어댑터 옵션 변경 -> 네트워크 사용 안함 -> 재부팅 -> 네트워크 사용 3. 네트워크 어댑터 디바이스 제거 장치 관리자 -> 네트워크 어댑터 -> wi-fi ~~ 우클릭 -> 디바이스 제거 ->..

[Unity 3D] transform.Translate 이동 구현 [내부링크]

목차. 서론 코드 작성 결론 서론 이동 방식은 transform.Translate, addForce, character controller 등 다양한 방법을 이용해 이동 구현이 가능합니다. 이번 글에서는 Translate를 이용해서 이동을 구현해 보겠습니다. 코드 작성 public class Player : MonoBehaviour { Transform pTransform; private float moveSpeed =10.0f; float hAxis; float vAxis; Vector3 moveDir; void Start() { pTransform = GetComponent(); } void Update() { Move(); } void Move() { hAxis = Input.GetAxisRaw("..

제페토[ZEPETO]- 2. Unity에서 ZEPETO 템플릿 생성 및 앱으로 실행 [내부링크]

저번에 Unity에 ZEPETO 템플릿 설치를 했으니 이번 글에서 ZEPETO 템플릿이 적용된 Unity 를 ZEPETO 앱에서 테스트 해보겠습니다. 1. 유니티에서 제페토 템플릿 정상 작동 확인하기 이런 warning 창과 이런 보안 경고창이 뜰 수 있는데 yes와 액세스 허용을 눌러줍니다 프로젝트 생성이 완료되면 바로 보이는 SampleScene을 눌러줍니다 그럼 중앙에 큐브 하나가 있는것을 볼 수 있고 실행버튼을 누르면 큐브 하나가 도는것을 볼 수 있고 여기까지 오셨다면 성공적으로 ZEPETO 템플릿을 설치한겁니다 그럼 이제 ZEPETO 앱에서 이 화면을 띄워보겠습니다 2. 위 예제를 ZEPETO 앱에서 테스트하기 일단 스마트폰에 ZEPETO 앱을 설치하고 다시 유니티에 돌아와 실행버튼 오른쪽 ZE..

제페토[ZEPETO]- 1. Unity 설치 및 ZEPETO 템플릿 등록하기 [내부링크]

ZEPETO 홈페이지 접속 제페토 홈페이지를 통해서 제페토 월드 개발에 대해서 자세하게 알 수 있다. 홈페이지의 내용을 보고 잘 따라해보자. ZEPETO - Make Yours ZEPETO Make Yours zepeto.me 제페토 홈페이지에 접속을 하면 상단 메뉴에 ZEPETO Studio가 있다. 클릭해준 뒤 다시 상단에 있는 가이드를 눌러준다. 그러면 제페토 학습을 위한 가이드 홈페이지가 나오게된다. 잘 들어갔다면 좌측 사이드바에 월드 시작하기 항목이 있다. 이번 글에서 따라할것은 월드 시작하기 이다. 일단 유니티에서 제페토를 개발하기 위해 해야 하는 것을 차례대로 따라 해 보겠다. 1. 유니티 설치 아래 링크에 접속해 유니티를 설치하면 된다. Download - Unity (unity3d.com..

[UE4] 언리얼 엔진 : 패키징 용량 최적화 [내부링크]

이 글은 Class 101 - 러셀 강의를 듣고 정리한 글입니다. 목차. 개요 패키지 설정 결과 개요 게임 또는 어플리케이션을 개발하고 나면, 사용자들에게 제공하기 위해 패키징 프로세스를 거쳐야 합니다. 패키징은 개발 중인 프로젝트를 실행 가능한 파일로 변환하는 과정입니다. 그런데 언리얼에서 패키징을 하고 파일 용량을 보니 무려 3G나 됩니다. 그래서 필요한 레벨만 패키징하여 최대한 용량을 최적화해 보겠습니다. 패키징 하기 전에 프로젝트 설정을 확인해야 합니다. 프로젝트 설정은 게임 또는 애플리케이션의 플랫폼 및 디바이스에 맞게 조정을 합니다. 언리얼 엔진에서는 다양한 플랫폼을 지원하므로 원하는 플랫폼에 맞게 설정을 변경해야 합니다. 자세한 패키징에 대한 방법은 언리얼 엔진 공식 문서를 확인하면 됩니다...

[UE4] 언리얼 엔진 : 레벨 전환시 화면 끊김 문제 해결하기 [내부링크]

이 글은 Class101 - 러셀 강의를 듣고 정리한 글입니다. 목차. 개요 레벨 시퀀스 생성 페이드 트랙 설정 블루프린트 클래스 작성 결과 개요 언리얼 엔진에서 게임을 개발 중, 레벨 간 전환 시 화면이 뚝끊기는 문제가 발생합니다. 이 문제는 플레이어 경험에 부정적인 영향을 미치며, 이를 해결하기 위해 시퀀서를 활용한 화면 페이드 인 페이드 아웃 효과를 적용하는 방법을 알아보겠습니다. 이를 통해 전환 시 부드럽고 시각적으로 매끄럽게 화면을 전환할 수 있습니다. 레벨 시퀀스 생성 먼저, 언리얼 엔진 에디터 창에서 시퀀스를 생성합니다. 시퀀스는 시각적인 요소를 효과적으로 다루는데 사용되며, 주로 카메라 연출에서 많이 사용이 됩니다. 또한 엑터의 스케일이나 위치를 조절하여 다양한 애니메이션 또한 연출이 가능..

[UE4] 언리얼 엔진 : 블루프린트를 활용한 레벨 간 이동 시스템 구현하기 [내부링크]

목차. 개요 블루프린트 클래스 추가 블루 프린트 이벤트 그래프 작성 결과 개요 포탈에 접근하면 다른 위치, 스테이지로 이동하는 기믹들이 많은 게임들에서 볼 수 있습니다. 언리얼 엔진에서도 개발할 때 주로 최적화를 위해 다른 공간은 주로 레벨로 나누는 경우가 많습니다. 이 글에서는 블루프린트를 활용하여 간단하고 효과적인 레벨 간 이동 시스템을 만드는 방법에 대해 알아보겠습니다. 이를 통해 게임 내에서 원하는 위치로 캐릭터를 이동시키는 기능을 구현할 수 있습니다. 블루프린트 클래스 추가 먼저 블루프린트를 하나 생성해야 합니다. 블루프린트 클래스 -> 부모 클래스 Actor 선택 생성한 블루프린트 클래스를 클릭합니다. 플레이어의 레벨 이동 이벤트를 위해 트리거가 되어줄 컴포넌트가 하나 필요합니다. 트리거를 위..

[UE4] 언리얼 엔진 : 나이아가라 시스템으로 눈 파티클 생성 및 이동 구현 [내부링크]

이 글은 Class 101 - 러셀 강의를 듣고 정리한 글입니다. 목차. 개요 나이아가라 시스템 추가 나이아가라 시스템 설정 파티클 이동 구현 결과 개요 언리얼 엔진 4에서 나이아가라 시스템은 효율적이면서 간단한 파티클 시스템을 제공합니다. 이 글에서는 나이아가라 시스템을 활용하여 눈 파티클을 생성하고, 플레이어의 이동에 따라 눈 파티클을 자연스럽게 이동시키는 방법을 알아보겠습니다. 이를 통해 게임 환경을 더욱 생동감 있게 만들 수 있습니다. 나이아가라 시스템 추가 먼저 나이아가라 시스템을 생성합니다. FX -> 나이아가라 시스템 선택 생성된 나이아가라 시스템의 이름을 NS_Snow로 이름을 지어줍니다. 나이아가라 시스템 설정 나이아가라 시스템을 클릭해서 새로운 창에 들어오면 두개의 노드가 보입니다. 그..

[UE4] 언리얼 엔진 : 익스포넨셜 하이트 포그(ExponentialHeightFog) 색 자동 설정 [내부링크]

목차. 개요 설정 결과 개요 익스포넨셜 하이트 포그는 게임의 대기나 전체적인 분위기를 형성하는데 많이 사용됩니다. 하지만 디렉셔널 라이트(DirectionalLight)를 사용할 때 문제점이 있습니다. 디렉셔널 라이트는 해가 지평선에 가까울수록 노을이 지는 것처럼 하늘색이 변합니다. 하지만 하이트 포그가 깔려있다면, 하이트 포그의 색에 의해 하늘색의 변화가 거의 보이지 않습니다. 예를 들어 하이트 포그가 파란색이라면 해가 지평선에 가까워져 노을이 진다고 해도 하늘은 여전히 파란색에 가깝게 보일 것입니다. 그래서 플루프린트 클래스를 활용하거나 C++ 클래스를 활용하여 실시간으로 디렉셔널 라이트의 각도의 변화를 체크하고, 각도의 변화에 맞춰서 하이트 포그의 색이 변한다면 자연스러운 연출이 가능합니다. 하지만..

[Unity] 유니티 : 싱글톤(Singleton) 패턴 [내부링크]

이 글은 Inflearn - Rookiss : C#과 유니티로 만드는 MMORPG 게임 개발 강의를 듣고 정리한 글입니다. 목차. 싱글톤 패턴이란? 코드 작성 코드 분석 결론 싱글톤 패턴이란? 싱글톤 패턴(Singleton Patten)은 소프트웨어 디자인 패턴 중 하나로, 객체를 하나만 생성하고 이를 여러 부분에서 공유하여 사용하는 패턴입니다. 이를 통해 하나의 객체 인스턴스가 어디서든 접근 가능하며, 중복 생성되지 않도록 보장합니다. 이번 글에서는 Unity에서 싱글톤 패턴을 어떻게 구현하고 활용하는지 살펴보겠습니다. 코드 작성 정통적인 C# 문법의 싱글톤 패턴과는 다르지만 유니티에서 사용되는 싱글톤 패턴 코드를 작성하겠습니다. Managers.cs using System.Collections; us..

[UE4] 언리얼 엔진 기초 : 머티리얼(Material),머티리얼 인스턴스(Material Instance) [내부링크]

이 글은 Class101 - Russell: 나만의 메타버스 공간 만들기 1 강의를 듣고 정리한 글입니다. 목차. 개요 머티리얼 만들기 머티리얼 인스턴스(Material Instance) 결과 개요 언리얼 엔진 4(UE4)에서 머티리얼(Material)과 머티리얼 인스턴스(Material Instance)는 그래픽 리소스를 효과적으로 다룰 수 있도록 도와줍니다. 머티리얼은 오브젝트의 재질, 색, 광택 등을 정의하는 것이라고 할 수 있습니다. 이것은 언리얼의 기본적인 구체입니다. 해당 구체를 클릭해 보면 머티리얼 항목의 엘리먼트로 BasicShapeMaterial이 있는 것을 볼 수 있습니다. 만약 이 머티리얼을 없애면 엘리먼트로 DefaultMaterial이 들어가면서 회색의 구체가 됩니다. 이번 글에서..

[Unity] 유니티 오브젝트 컬링 문제 [내부링크]

목차. 개요 오브젝트 컬링이란? 문제 해결 개요 카메라를 마우스를 이용해 여러 각도로 돌릴 수 있는 3인칭 게임을 개발하던 중, 천장, 플레이어 등 다양한 오브젝트가 특정 카메라 각도에서 컬링이 되어버린다. 오브젝트 컬링이란? 오브젝트 컬링은 게임 엔진이 화면에 보이지 않는 오브젝트를 렌더링 하지 않도록 하는 기술입니다. 이를 통해 게임의 성능을 최적화 할 수 있습니다. 오브젝트 컬링은 주로 다음과 같은 경우에 사용됩니다. 1. 시야에 들어오지 않는 오브젝트 : 플레이어 시야 밖에 있는 오브젝트를 렌더링 하지 않아 성능을 향상시킵니다. 2. 적용 범위 제한 : 특정 카메라나 뷰포트에만 오브젝트를 렌더링 하고자 할 때 사용됩니다. 정리해 보자면 보일 때는 렌더링 하고 안 보일 때는 렌더링 하지 않는 기술을..

[Unity] 유니티 그림자 안생기는 문제 [내부링크]

목차. 개요 문제 해결 개요 유니티에서 캐릭터가 실내에 있을 때 그림자가 생기지 않는 현상을 발견했습니다. 그래서 Directional Light에 Shadow가 꺼져있나? 싶어서 확인을 했는데 분명 Shadow도 켜져 있고 Strength도 1로 되어있었습니다. 그렇게 Light Setting이랑 이것저것 만져봐도 해결이 안 돼서 고민하던 중, 아무 생각 없이 캐릭터 위치를 바꿨는데 그림자가 생겼습니다. 실내에 있을 때 사물의 그림자가 생기지 않고, 실외로 캐릭터를 옮기니 다시 그림자가 생기는 모습을 보니 Directional Light의 문제가 아닌 것을 알게 되었습니다. 문제 해결 알고 보니 천장 오브젝트의 Mesh Renderer에 Cast Shadows가 On으로 되어있었습니다. 지금까지 그림자..

[Unity] 유니티 라이팅 공부 : Emission과 Global Illumination [내부링크]

이 글은 유튜브 - Brackeys : Unity의 조명 영상을 보고 정리한 글입니다. 목차. Illumination : Direct와 InDirect의 차이 Light 설정 Light Baking Light Mapping Post Processing 설정 결과 Illumination : Direct와 InDirect의 차이 Direct Illumination 광원에서 나온 빛이 한번 반사되어 우리 눈에 도달하는 것을 직접조명(Direct Illumination)이라고 합니다. Direct Illumination은 주로 주변 물체에서 직접적으로 빛을 받는 부분을 나타냅니다. 이것은 광원에서 나오는 빛이 표면에 닿아 반사되거나 스스로 발광하는 경우를 포함합니다. 아래 사진은 직접조명만 우리 눈에 들어왔을 ..

[UE4] 언리얼 엔진 기초 : 아이템 줍기,콜리전 충돌 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 서론 오브젝트 채널, 프로파일 추가 프로파일 추가 C++ 클래스 코드 수정 결과 서론 플레이어와 상호 작용하는 아이템은 많은 게임들의 핵심 요소입니다. 예를 들어 RPG 게임에서 아이템이 드랍되고 캐릭터가 아이템에 접촉하면 획득하는 것처럼 무기가 바닥에 있고 캐릭터가 무기와 접촉했을 때 그 무기를 장착하는 기능을 구현해 보겠습니다. 오브젝트 채널 추가 먼저 오브젝트 채널을 추가해야합니다. 무기에 적용될 오브젝트 채널을 추가하겠습니다. 프로젝트 세팅 -> 콜리전 -> 새 오브젝트 채널을 선택하고 이름은 MyCollectible, 기본 반응은 충돌을 하면 안 되기 때문에 Ignore로 해주겠습니다. 프로파..

[UE4] Skeletal Mesh Socket 무기 장착 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 서론 소켓이란? 소켓 추가 C++ 클래스에서 무기 추가 액터로 코드 수정 결론 서론 언리얼 엔진에서 Skeletal Mesh와 Socket를 활용하면 플레이어가 무기를 자연스럽게 쥐도록 구현할 수 있습니다. 이 글에서는 Skeletal Mesh Socket를 사용하여 플레이어 손에 무기를 쥐어주는 방법에 대해 알아보겠습니다. 소켓이란? 먼저, Skeletal Mesh와 소켓(Socket)이 무엇인지 이해해야 합니다. Skeletal Mesh는 캐릭터 또는 오브젝트의 빼대 와 함께 애니메이션을 할 수 있는 모델을 나타냅니다. Socket는 이 Skeletal Mesh의 특정 부분에 무기 또는 다른 아이템..

[UE4] Collision 충돌처리 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 서론 오브젝트 채널 추가 프리셋 추가 프리셋 적용 트레이스 채널 추가 C++ 클래스 코드 수정(공격 판정) 결과 서론 Collision은 게임 개발에서 오브젝트 간의 상호작용을 제어하는 중요한 개념입니다. 언리얼에서는 오브젝트 간의 충돌을 감지하고 그 결과를 다양한 방식으로 활용할 수 있습니다. 게임을 시작하면 캐릭터가 낙하하지 않고 바닥 위에 서있는 것을 볼 수 있습니다. 기본적으로 캐릭터는 Capsule Component가 붙어있기 때문에 바닥과 충돌하기 때문입니다. 이 글에서는 언리얼에서 Collision 시스템에 대한 이해와 플레이어가 공격을 하면 Collision으로 이벤트를 발생시키도록 해보..

[Unity] 병목(Bottleneck) - CPU 와 GPU, 최적화 및 프로파일링 [내부링크]

이 글은 Youtube - Unity Korea 영상을 보고 정리한 글입니다. 목차. 개요 병목이란? 드로우콜(Draw Call) 렌더 스테이트(Render States) 커멘드 버퍼(Command Buffer) 메모리(Memory) 개요 최적화는 게임 개발하면서 가장 중요하다고 할 정도입니다. 최적화에 관련된 이야기에서 빼놓을 수 없는 것이 바로 병목을 찾는 것입니다. 프로파일링을 통해서 문제점을 찾아야 하고, 이 프로파일링을 근거를 통해 최적화를 진행하는 것이 가장 일반적이고 확실한 최적화 방법입니다. 하지만 많은 사람들이 이 병목에 대한 문제를 생각하지 못하고 텍스쳐 사이즈 줄이기와 같은 행동을 하고 있습니다. 이번에 최적화를 위해 어떤 것을 신경 써야 하고 어떻게 해야 하는지에 대해 하나하나 정리..

[백준][C++] 10798 문제 : 세로읽기 [내부링크]

이 글은 백준을 통해 공부하며 작성한 글입니다. 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 목차. 10798번 : 세로읽기 소스코드 코드분석 10798 : 세로읽기 문제 아직 글을 모르는 영석이가 벽에 걸린 칠판에 자석이 붙어있는 글자들을 붙이는 장난감을 가지고 놀고 있다. 이 장난감에 있는 글자들은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’이다. 영석이는 칠판에 글자들을 수평으로 일렬로 붙여서 단어를 만든다. 다시 그 아래쪽에 글자들을 붙여서 또 다른 ..

[UE4] 언리얼 엔진 기초 : 블렌드 스페이스 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 블렌드 스페이스란? 블렌드 애니메이션 설정 C++ 클래스 코드 작성 블렌드 스페이스란? 블렌드 스페이스 : Blend Space, 블렌드 스페이스는 여러 입력값에 따라 몇 개의 애니메이션도 서로 블렌딩할 수 있게 만들어주는 애셋입니다. 블렌드 스페이스 (Blend Space) 는 애님 그래프에서 샘플링할 수 있는 특수 애셋으로, 두 입력값에 따라 애니메이션을 블렌딩 시켜 주는 것입니다. 하나의 입력에 따라 두 애니메이션을 섞는 단순 블렌딩은 애니메이션 블루프린트에서 쓸 수 있는 표준 블렌드 노드를 사용하면 됩니다. 블렌드 스페이스를 통해 (현재는 둘로 제한되어 있지만) 다수의 값에 따라 다수의 애니메이..

[백준][C++] 4673 문제 : 셀프 넘버 [내부링크]

이 글은 백준을 공부하며 작성한 글입니다. 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 목차. 4673번 : 셀프넘버 소스코드 코드분석 4673번 : 셀프넘버 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자릿수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), ..

[UE4] 언리얼 엔진 기초 : 델리게이트(Delegate) [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 델리게이트의 개념 문제의 코드 코드 개선 델리게이트의 개념 델리게이트 : C++ 오브젝트 상의 멤버 함수를 가리키고 실행시키는 데이터 유형입니다. 델리게이트(Delegate)로 C++ 오브젝트 상의 멤버 함수 호출을 일반적이고 유형적으로 안전한 방식으로 할 수 있습니다. 델리게이트를 사용하여 임의 오브젝트의 멤버 함수에 동적으로 바인딩시킬 수 있으며, 그런 다음 그 오브젝트에서 함수를 호출할 수 있습니다. 호출하는 곳에서 오브젝트의 유형을 몰라도 말이죠. 델리게이트 오브젝트는 복사해도 완벽히 안전합니다. 델리게이트는 값으로 전달 가능하나 보통 추천할 만 하지는 않는데, heap에 메모리를 할당해야 하기..

[UE4] 언리얼 엔진 기초 : 애니메이션 몽타주(Animation Montage) [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 애니메이션 몽타주 개요 애니메이션 몽타주 생성 애니메이션 편집 프로젝트 세팅 Character C++ 클래스 코드 추가 스테이트 머신 수정 애니메이션 몽타주 개요 애니메이션 몽타주를는 폭넓은 애니메이션 이펙트가 가능해지는 다목적 툴로써, 주로 코드를 통해서나 블루프린트 비주얼 스크립트 안에서 애니메이션 컨트롤을 노출시키는 데 관련되어 있습니다. 애니메이션의 지능형 루프, 로직 기반 애니메이션 전환, 루트 모션 핸들링, 기타 여러 가지 다양한 애니메이션 이펙트를 만드는 데도 사용 가능합니다. 애니메이션 몽타주를 사용하면 블루프린트 또는 C++ 코드를 통해 애니메이션 에셋을 바로 제어할 수 있습니다. 애니..

[UE4] 언리얼 엔진 기초 : 애니메이션 블루프린트 스테이트 머신 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 개요 스테이트(상태) 머신 사용 : 점프 점프 애니메이션 개선 개요 플레이어의 다양한 행동에 대해서 애니메이션을 if-else문을 통해 제어할 수 있지만 이후 코드가 꼬이게 될 가능성이 매우 높습니다. 만약 각 행동에 대해 상태로 관리하면 깔끔하게 관리가 가능한데 이번 글에서 상태 머신을 사용해서 애니메이션을 관리해 보겠습니다. 스테이트(상태) 머신 사용 : 점프 플레이어의 움직임에 따라서 애니메이션이 작동하게 했었습니다. 여기서 점프가 추가된다면 if-else를 통해서도 구현할 수 있지만 스테이터 머신을 활용해서 점프 애니메이션을 구현해 보겠습니다. AnimGraph 창에서 마우스 우클릭 -> sta..

[UE4] 언리얼 엔진 기초 : 애니메이션 노티파이 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 애니메이션 노티파이란? 애니메이션 노티파이 생성 C++코드 작성 애니메이션 노티파이란? 애니메이션 노티파이 : Notify, 노티파이는 애니메이션 시퀀스에서 이벤트를 구성하고 받아 외부 동작을 수행하는 알림 시스템입니다. 애니메이션 프로그래머는 Animation Notification (애니메이션 노티파이), 또는 AnimNotify (애님 노티파이), 줄여서 그냥 Notify (노티파이)를 통해 애니메이션 시퀀스 도중의 특정 지점에 이벤트가 발생하도록 구성할 수 있습니다. 노티파이는 걷기나 달리기 도중의 발소리 같은 이펙트 추가 및 애니메이션 도중 파티클 시스템을 스폰시키는 데 주로 사용됩니다. 하지..

[UE4] 언리얼 엔진 기초 : 애니메이션 기초 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 애니메이션 살펴보기 Anim Instance 클래스 생성 및 애니메이션 블루프린트 생성 애니메이션 블루프린트 살펴보기 캐릭터 애니메이션 구현 애니메이션 살펴보기 먼저 블루프린트에서 애니메이션 작동을 확인하기 위해 Mesh -> 애니메이션 항목에서 Animation Mode을 Use Animation Asset -> Animation Play에서 원하는 애니메이션을 선택하면 애니메이션이 작동하는 것을 확인할 수 있습니다. 기존에 작성해둔 캐릭터 클래스에서 애니메이션을 제어해도 되지만, 프로젝트의 규모가 커질수록 제어하기 어려워집니다. 그래서 애니메이션을 별도의 클래스에서 제어하는게 좋습니다. Anim I..

[C++] 소수점 자리수 설정, 조절하기 [내부링크]

목차. 개요 코드 개요 기본적으로 float이나 double 자료형을 출력하면 위 사진처럼 어느 정도 소수점 자리를 적정선까지 출력하고 끊습니다. 소수점 자리를 지정해서 출력하도록 해보겠습니다. 코드 cout

[UE4] 언리얼 엔진 기초 : 블루프린트 클래스 사용하기 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 블루프린트 클래스 생성 블루프린트 클래스 구조 블루프린트 클래스 기본 설정 블루프린트 클래스 캐릭터 이동, 카메라 움직임 구현 C++ 클래스를 블루프린트로 변경하기(복사하기) 블루프린트 클래스 생성 저번 글에서 작성한 C++클래스를 블루프린트로 구현해 볼 계획이기 때문에 Character를 생성하겠습니다. 콘텐츠 -> 빈 폴더 생성(이름 : Blueprints) -> 블루프린트 클래스 -> Character 클릭 생성된 블루프린트를 더블클릭 했을 때 아래와 같은 창이 뜬다면 잘 생성된 것입니다. 블루프린트 클래스 구조 블루프린트도 잘 보면 C++ 클래스와 거의 똑같은 구조를 가지고 있습니다. 이벤트 그..

[UE4] 언리얼 엔진 : 스타터 콘텐츠(StarterContent) 삭제하기 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. Starter Content 계속 다시 생기는 원인 Starter Content 삭제 Starter Content 계속 다시 생기는 원인 분명 에디터 창에서도 삭제해 보고, 직접 경로로 가서 폴더에서도 삭제했는데, 엔진으로 돌아오면 계속 다시 생긴다 알아보니 다시 복원되는 원인은 이것이 계속 파일을 복원시켜주던 것이었다. Starter Content 삭제 Config 폴더 -> DefaultGame.ini 이라는 파일에 보면 [StartupAction]이라는 부분이 있는데 저 부분을 전부 지워준다. 그리고 데이터를 깔끔하게 지우기 위해 Binaries, DerivedDataCache, Intermedi..

[UE4] 언리얼 엔진 기초 : 클래스에서 카메라 움직임 제어 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. SpringArm 컴포넌트, Camera 컴포넌트 추가 및 생성 SpringArm 설정 마우스로 카메라 움직임 추가 SpringArm 컴포넌트, Camera 컴포넌트 추가 및 생성 캐릭터를 타켓으로 카메라를 설정해야 하기 때문에 캐릭터 클래스에 카메라 컴포넌트를 추가하겠습니다. ChacacterClass.h class TESTUNREALENGINE_API AMyCharacter : public ACharacter { .... private: UPROPERTY(VisibleAnywhere); USpringArmComponent* SpringArm; UPROPERTY(VisibleAnywhere); UCa..

[UE4] 언리얼 엔진 기초 : 클래스에서 Character 생성과 이동 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. Character Class 추가 Character Class 구조 Character 매쉬 추가 Character 이동 구현 Character Class 추가 콘텐츠 브라우저 빈 공간 우클릭 -> 새로운 c++ 클래스 -> Character 클래스 선택 Character Class 구조 Character 클래스를 생성하면 ACharcter 클래스를 상속받는 새로운 클래스가 생성됩니다. 클래스의 구조는 Pawn과 동일해 보이는데 한번 ACharacter의 구조를 보겠습니다. 지금까지 Actor와 Pawn 클래스를 공부했는데 Character 클래스와 어떤 차이가 있을까요? Actor와 Pawn 클래스 M..

[Unity] 유니티 : TextMeshPro 수정하기 [내부링크]

목차. 문제 발생 스크립트에서 TextMeshPro 수정하기 결론부터 말하자면 TextMeshPro를 수정하기 위해서는 TMP_Text 를 사용하면 된다. 문제 발생 분명 Text 컴포넌트는 Text tx = GameObject.Find("Text").GetComponent(); tx.text = "텍스트1"; 이런 방식으로 텍스트 수정이 가능했다. 그래서 TextMeshPro도 이름 그대로 TextMeshPro tmp = GameObject.Find("TextMeshPro").GetComponent(); tmp.text = "텍스트2"; 이런 방식으로 텍스트 수정이 가능할 줄 알았는데 게임을 실행해 보면 에러가 뜬다.. 분명 사진처럼 TextMeshPro가 있는데 뭐가 문제일까? 스크립트에서 TextM..

[UE4] 언리얼 엔진 기초 : 게임플레이 프레임워크 - GameMode와 Pawn 움직이기 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. Game Mode란? Game Mode 새로 만들기 키 입력으로 Pawn 움직이기 Game Mode란? 월드 세팅창에서 보면 GameMode라는 항목을 볼 수 있다. GameMode는 일종의 규칙이라고 볼 수 있다. 배틀그라운드의 규칙으로 자기장이 나온다. 카스의 규칙으로 폭탄이 터지면 이긴다 등의 규칙들이 있는데, Game Mode는 이러한 규칙들을 설정할 수 있는 Mode라고 보면 된다. 게임모드에 따라 아래에 있는 Class들이 변경이 되며 게임 자체를 관제하게 된다. Game Mode 새로 만들기 콘텐츠 브라우저 창에서 빈 공간 우클릭 -> 새로운 C++클래스 -> Game Mode Base 클..

[UE4] 언리얼 엔진 기초 : 회전(FRotator) [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. FRotator 회전 FRotator 회전 먼저 Actor를 월드(World)와 로컬(Local)로 회전이 가능하다. World 게임 월드를 기준으로 회전한다. 내가 어떤 오브젝트의 자식으로 있던지, 어떤 상태이던지 월드를 기준으로 회전 Local 내기준(로컬)으로 회전한다. 현재 상태에 따라 회전이 달라질 수 있다. void AMyActor::Tick(float DeltaTime) { Super::Tick(DeltaTime); //RotateSpeed는 헤더에서 선언 //DeltaTime은 꼭 곱해줘야함 AddActorLocalRotation(FRotator(0.f, RotateSpeed * Delt..

[UE4] 언리얼 엔진 기초 : 로그(UE_LOG)출력과 디버깅 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. 로그(UE_LOG) 출력 브레이크 포인트 디버깅 로그(UE_LOG) 출력 유니티 로그 : Debug.Log 언리얼 로그 : UE_LOG 둘의 가장 큰 차이는 매개 변수라고 볼 수 있다. 언리얼 로그의 매개변수는 UE_LOG(카테고리, 로깅수준, 형식, 인자)로 유니티 로그만 출력해본 사람으로서 조금 어렵게 느껴진다. // Called when the game starts or when spawned void AMyActor::BeginPlay() { Super::BeginPlay(); //카테고리, 로깅수준, 형식, 인자 UE_LOG(LogTemp, Warning, TEXT("BeginPlay %d")..

[UE4] 언리얼 엔진 기초 : C++을 활용한 Actor 생성 [내부링크]

이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다. 목차. C++ 클래스 생성과 구조 클래스에서 StaticMeshComponent 추가하기 클래스에서 Static Mesh Load 하기 지역변수 외부 노출과 수정 C++ 클래스 생성과 구조. 콘텐츠 브라우저에서 마우스 우클릭 -> 새로운 C++ 클래스 생성을 클릭 생성하면 아래 사진과 같이 부모 클래스 선택창이 뜹니다. Actor 영화 세트장에있는 배우, 사물 등과 같음 언리얼에서는 Actor, 유니티의 경우 Game Object Object의 상속을 받고 있다. Pawn 입력을 통해 물체를 조종할 수 있다. Actor의 상속을 받고 있다. Character 입력을 통해 캐릭터를 조종할 수 있다. Pawn과 ..

[C++][백준] 2839 문제 : 설탕 배달 [내부링크]

문제 소스코드1 #include #include using namespace std; int main() { const int FIVEKG = 5; const int THREEKG = 3; int input; cin >> input; int bestCount = INT_MAX; //모든 경우의 수를 loop해서 최적의 경우를 찾는방법 for (int count5 = 0; count5

[백준][C++] 1110 문제 : 더하기 사이클 [내부링크]

문제 소스코드1 #include using namespace std; int Calculate1(int n) { //26 입력시 결과는 6 int result = n % 10; return result; } int Calculate2(int n) { //26 입력시 결과는 8 int sum = 0; while (n > 0) { sum += n % 10; n /= 10; } return sum; } int main() { int repeat = 0; int input = 0; int original = 0; cin >> input; original = input; while (true) { repeat++; int calculatedSum = Calculate2(original); if (calculate..

[백준][C++] 19532 문제 : 수학은 비대면강의입니다 [내부링크]

문제 수현이는 4차 산업혁명 시대에 살고 있는 중학생이다. 코로나 19로 인해, 수현이는 버추얼 학교로 버추얼 출석해 버추얼 강의를 듣고 있다. 수현이의 버추얼 선생님은 문자가 2개인 연립방정식을 해결하는 방법에 대해 강의하고, 다음과 같은 문제를 숙제로 냈다. ax + by = c dx + ey = f 4차 산업혁명 시대에 숙제나 하고 앉아있는 것보다 버추얼 친구들을 만나러 가는 게 더 가치있는 일이라고 생각했던 수현이는 이런 연립방정식을 풀 시간이 없었다. 다행히도, 버추얼 강의의 숙제 제출은 인터넷 창의 빈 칸에 수들을 입력하는 식이다. 각 칸에는 -999 이상 999 이하의 정수만 입력할 수 있다. 수현이가 버추얼 친구들을 만나러 버추얼 세계로 떠날 수 있게 도와주자. 입력 정수 a, b, c, ..

[C++] 정수 한자리씩 분할하기 [내부링크]

C++에서 입력된 정수를 한 자리씩 분할하는 코드를 다뤄보겠습니다. 백준 2231번 문제 분해합을 푸는 과정에서 배우게 되었습니다. 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 소스코드 #include int main() { int num =12345; while (num > 0) { int digit = num % 10; cout

[C++] 백준 2798 문제 : 블랙잭 [내부링크]

문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때, ..

[C++] 구조체의 활용 : x,y 좌표 입력받기 [내부링크]

이번에 활용할 Point 구조체 C++에서 좌표를 표현하고 다룰때 간편하게 사용하기위해 구조체를 많이 사용합니다. 제가 이번에 작성한 Point 구조체는 두 개의 정수 멤버 변수를 가지며, 이는 각각 x와 y 좌표를 나타냅니다. 이러한 구조체를 사용하면 2D 공간에서의 위치를 표현하고 다양한 계산을 수행할 수 있습니다. Point 구조체 정의 struct Point { int x; int y; }; 주로 x, y 좌표를 나타낼 때 int 형태로 사용되지만 float도 사용하여 Point 구조체를 정의할 수 있습니다. struct Point { float x; float y; }; Point 구조체 활용 구조체 사용하지 않은 코드 예시 #include #include #include using namesp..

[C#][네트워크] Interlocked.CompareExchage [내부링크]

Inflearn - Rookiss 에서 공부한 내용을 정리한 글 입니다 이번 글에서 Lock을 이용할 때 멀티 스레드로 인해 원하는 결과가 나오지 않는 상황을 다뤄보겠습니다. 문제의 코드 using System; using System.ComponentModel; using System.Numerics; namespace ServerCore { class SpinLock { volatile bool _locked = false; public void Acquire() { while (_locked) { } _locked = true; } public void Release() { _locked = false; } } class Program { static int _num = 0; static SpinL..

[C++] 백준 1085 문제 : 직사각형에서 탈출 [내부링크]

백준 1085번 : 직사각형에서 탈출 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 문제 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 x, y, w, h가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 위 문제는 최단거리를 구하는 알고리즘을 통해 해결할 수 있다 소스코드 #include #in..

[C++][알고리즘] 소인수분해 [내부링크]

소인수분해란? 소인수분해는 말 그대로 어떤 수를 소수들의 곱으로 나타내는 것을 의미합니다. 예를 들어 12를 소인수분해하면 2 x 2 x 3로 나타낼 수 있습니다. 7과 같은 소수는 분해하면 자기 자신인 7만 남게 됩니다. 이렇게 나타내면 원래 수를 더 작은 소수들의 곱으로 표현하는 것이 가능해집니다. 소인수분해 예시코드1 #include using namespace std; int main() { int N; cin >> N; for (int i = 2; i * i

[백준][C++] 2869 문제 : 달팽이는 올라가고 싶다 [내부링크]

문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V 미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A 미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B 미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 위 문제의 핵심은 제한시간이 0.25초라는것이다 #include using namespace std; int main() { int A, B, V; int day = 0; cin >> A ..

[C#][네트워크] Lock [내부링크]

Lock 멀티 스레드를 싱글 스레드와 같이 원자성을 보장도록 하려면 어떻게 해야할까 Inflearn - Rookiss 에서 공부한 내용을 정리한 글 입니다. 다양한 방법들이 있지만 이번에는 Lock에 대해 다뤄보겠습니다. Monitor.Enter() / Monitor.Exit() using System; using System.Numerics; namespace CSharp { class Program { static int number = 0; static object _obj = new object(); static void Thread_1() { for (int i = 0; i < 100000; i++) { Monitor.Enter(_obj); //문을 잠군다 number++; Monitor.Exi..

[C#][네트워크] Interlocked [내부링크]

Interlocked Interlocked이 무엇인가에 대해 설명하기 앞서 다음 코드의 실행 결과로 어떤 값이 출력될까? using System; using System.Numerics; namespace CSharp { class Program { static int number = 0; static void Thread_1() { for (int i = 0; i < 100000; i++) number++; } static void Thread_2() { for (int i = 0; i < 100000; i++) number--; } static void Main() { Task t1 = new Task(Thread_1); Task t2 = new Task(Thread_2); t1.Start(); t2..

[백준][C++] 2720 문제 : 세탁소 사장 동혁 [내부링크]

문제 미국으로 유학간 동혁이는 세탁소를 운영하고 있다. 동혁이는 최근에 아르바이트로 고등학생 리암을 채용했다. 동혁이는 리암에게 실망했다. 리암은 거스름돈을 주는 것을 자꾸 실수한다. 심지어 $0.5달러를 줘야하는 경우에 거스름돈으로 $5달러를 주는것이다! 어쩔수 없이 뛰어난 코딩 실력을 발휘해 리암을 도와주는 프로그램을 작성하려고 하지만, 디아블로를 하느라 코딩할 시간이 없어서 이 문제를 읽고 있는 여러분이 대신 해주어야 한다. 거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그램을 작성하시오. 거스름돈은 항상 $5.00 이하이고, 손님이 ..

[C++] 이차원 배열 동적할당 /정적할당 [내부링크]

만약 N(행), M(열)이 3x3이라면 위 2차원 배열과 같은 형태를 가질 것 입니다. 2차원 배열 정적할당 int N, M; cin >> N; cin >> M; int arr[N][M] = { {2, 4, 5}, {1, 2, 5} }; 정적할당을 할때는 포인터를 사용하지 않고 선언이 가능합니다. 하지만 동적할당을 할때는 1차원 배열 동적할당과 마찬가지로 포인터를 사용하는데 선언 방법이 조금 다릅니다. 2차원 배열 동적할당 int** arr = new int*[N]; for (int i = 0; i < N; ++i) { arr[i] = new int[M]; } 1차원과 형태는 비슷하지만 보인터가 한개 더 있다는점과 자료형 옆에도 포인터가 붙는다는점, 그리고 반복문을 이용한다는 부분이 차이점으로 볼 수 있..

[C++] STL map 정리 [내부링크]

백준을 통해 C++을 공부하던중 키-값을 한쌍으로 저장할 수 없을까 찾던중 STL 에서 map 컨테이너가 있어 이를 정리해보겠습니다. 목차 1. map 이란? 2. map 특징 및 장점 3. map 기본 형태 4. map 사용법 map 이란? C++의 표준 라이브러리(STL)에서 제공되는 컨테이너중 하나인 "맵(Map)"컨테이너 입니다. 맵은 키-값(key-value)쌍으로 데이터를 저장하는 데이터 구조로, 각 키는 유일해야 하며, 키에 대응하는 값을 빠르게 찾을 수 있습니다. map 특징 및 장점 1. 유니크한 키(Key)와 값(Value)의 쌍 : 맵은 각 키가 유일합니다. 같은 키를 두 번 이상 저장할 수 없으며, 그 결과 데이터를 빠르게 찾을 수 있습니다. 대량 데이터 검색에 유용하여 데이터베이스..

[백준][C++] 5622 문제 : 다이얼 [내부링크]

문제 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다. 상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다. 할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 ..

[C++] (string , vector) 반전,뒤집기 : reverse 함수 [내부링크]

string과 vector를 반전시키는 방법은 루프를 이용, 재귀 함수를 이용 등 여러 가지가 있는데 그중 가장 간단하게 사용 가능한 reverse 함수를 사용해 보겠습니다. reverse? reverse의 헤더 : #include C++의 표준 라이브러리에 포함된 "algorithm"헤더에 정의된 함수이며 주로 반전을 수행하는 기능을 제공합니다. string과 vector, deque list 등을 반전시킬 수 있으며 많이 사용되는 string과 vector를 다뤄보겠습니다. reverse 함수 사용법 reverse(string.begin(),string.end()); #include #include #include using namespace std; int main() { string str; ci..

[C++] stringstream 사용법 : 문자열 단어로 나누기 [내부링크]

백준 1152번 단어의 개수라는 문제에서 문자열을 입력받고 해당 문자열에 있는 단어의 수를 구하는 문제를 풀던 중 새롭게 배운 stringstream에 대한 복습으로 글을 작성하게 되었습니다. stringstream 이란? C++ 표준 라이브러리에 포함된 클래스로, 문자열을 스트림으로 다룰 수 있게 해주는 도우미 클래스입니다. 즉 문자열에서 자료형을 필요에 따라 꺼낼때 유용하게 사용됩니다. 헤더 : #include stringstream 사용법 문자열을 단어로 구분 #include #include #include using namespace std; int main() { string str; getline(cin, str); // 공백을 구분자로 사용하여 문자열을 토큰으로 나누기 stringstream..

[C++] 공백을 포함한 문자열 입력받기(getline) [내부링크]

getline 이란? string 헤더에 포함된 함수로 문자열에서 한 줄을 공백을 포함하여 읽어오는 역할을 합니다. 만약 string str이 있고 입력을 통해 "Do Test"를 입력하면 "Do"만 str에 저장이 되고 "Test"는 입력 버퍼에 남게 됩니다. cin은 공백, 개행 문자, 탭 등을 입력을 구분하는 구분자로 취급하기 때문입니다. getline 사용법 getline(cin,변수) #include #include using namespace std; int main() { string input; getline(cin, input); return 0; } getline(cin,string)을 사용하여 공백을 포함한 문자열을 받아올 수 있습니다. cin.getline(변수,배열크기) , cin..

[C++] 아스키 코드(ASCII)를 int 정수로 변환하는법 [내부링크]

백준 11720 문제 : 숫자의 합 문제에서 다음과 같은 문제가 나왔는데 해당 문제에서 아스키 코드를 int 정수로 변환해야하는 상황이 있어 글로 정리하게 되었습니다. 아스키 코드(ASCII) -> int 정수 변환 아스키 코드 - '0' 조금 더 자세히 설명하자면 1을 string으로 입력을 하고 int로 형변환하게 된다면 아스키코드로 변환되어 49가 출력됩니다. 만약 1을 입력하고 그대로 1을 출력하고 싶다면 아스키코드로 48인 '0'을 빼주면 결과적으로 1이 출력되게 됩니다. ex) '1(49) - 0(48) = 1' ex) '5(53) - 0(48) = 5' 위 백준 문제에 대한 풀이코드로 #include #include using namespace std; int main() { int N; c..

[C++] C++에서 문자를 아스키 코드로 형변환 하는법 [내부링크]

C++에서 문자를 아스키 코드로 변환시키는 방법에 대해 알려드리겠습니다 Char -> Int(아스키) 암시적 형변환 char c; cin >> c; int i = c; // A입력시 i는 65 위 코드는 암시적으로 char을 int로 형변환 하는 코드입니다 명시적 형변환 char c; cin >> c; int i = (int)c; // A입력시 i는 65 또 다른 방법으로 이렇게 명시적으로 형변환하는 방법이 있는데 두 방법 모두 동일한 결과를 나타내며 첫번째 방법이 더 시각적으로는 깔끔한 코드인 것 같습니다. C++ 표준 라이브러리 함수 사용 char ch ; cin >> ch; cout

[백준허브] 깃허브, 백준 연동으로 코드 자동 업로드 [내부링크]

깃허브와 백준을 연동하여 코드를 제출하면 정답 시 자동으로 깃허브에 업로드할 수 있는 방법을 알려드리겠습니다. 백준허브(BaekJoonHub) 설치 위 링크를 눌러 설치 화면으로 이동할 수 있습니다. 단 해당 기능은 Chrome 플러그인으로 Chrome에서만 사용이 가능합니다. 해당 링크를 들어가면 다음과 같은 창이 뜨는데 저는 이미 설치를 하여 삭제 버튼이 뜨지만 설치를 하지 않았다면 다운로드 또는 추가 버튼이 뜰 것입니다. 설치 후 우측 상단에 플러그인 아이콘을 눌러보면 설치된 백준 허브가 있는 것을 확인 가능하고 클릭하면 위 사진과 같이 뜨는데 Authenticate를 누른 뒤 깃허브를 로그인하면 해당 페이지로 이동이 됩니다. Pick an Option을 눌러보면 두 가지 옵션이 있는데 Create..

[백준][C++] 5597 문제 : 과제 안 내신 분..? [내부링크]

2023.07.28 문제 풀이 결과 : 오답 문제 X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 입력 입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다. 출력 출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다. 나의 풀이 #include #include int main() { int input =28; std::vector n..

[C++] STL Set Container 특징 및 사용 [내부링크]

C++을 공부하던중 Set을 알게되었는데 매우 유용한것같아 글로 정리하였습니다. Set이란? - std::set은 표준 라이브러리(STL)에서 제공하는 컨테이너 - 노드 기반 으로 균형 이진 탐색 트리(binary search tree) 이며, 정렬된 원소들을 저장하는 자료구조 - 중복을 허용하지 않음 - 기본적으로 오름차순으로 정렬 중복 테스트 다음과 같이 초기화시 중복된 값은 삭제되고 하나의 값만 들어간 모습 오름차순 정렬 테스트 다음과 같이 초기화시 오름차순으로 정렬된 모습 Set의 시간 복잡도는? - 위에서 설명한것과 같이 set은 이진 탐색 트리기반으로 삽입, 삭제, 검색 연산이 모두 O(log n)의 시간복잡도 Set 사용시 고려사항 - set은 자동으로 정렬되기 때문에 데이터 삽입..

[백준][C++] 10813 문제 : 공 바꾸기 [내부링크]

2023.07.27 문제 풀이 결과 : 오답 문제 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 들어있다. 도현이는 앞으로 M번 공을 바꾸려고 한다. 도현이는 공을 바꿀 바구니 2개를 선택하고, 두 바구니에 들어있는 공을 서로 교환한다. 공을 어떻게 바꿀지가 주어졌을 때, M번 공을 바꾼 이후에 각 바구니에 어떤 공이 들어있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐서 공을 교환할 방법이 주어진다. 각 방법은 두 정수 i j로 이루어져 있으며, i번 바구니..

[Unity] 유니티 : 마우스 드래그로 UI 움직이기 [내부링크]

인터넷 페이지를 상단 드래그를 통해 움직일 수 있는것처럼 유니티에서도 UI를 마우스 드래그로 움직이는 기능을 구현해보겠습니다. 출처 : [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 - 인프런 | 강의 (inflearn.com) 소스 코드 using UnityEngine; using UnityEngine.EventSystems; public class UI_EventHandler : MonoBehaviour, IDragHandler { public void OnDrag(PointerEventData eventData) { transform.position = eventData.position; } } 먼저 마우스 이벤트를 사용하기위해 IDragHandler 인터페이스를..

[C++] : 배열 동적 할당 [내부링크]

백준을 통해 공부하던 중 배열을 동적 할당해야 하는 문제가 있었다. C#과는 조금 다른 것 같아 헷갈렸지만 크게 어려운 부분은 없는 것 같다 정적 배열 int num[5]; const int value; int num[value]; 정적 배열은 배열의 크기가 프로그램 실행전에 공간을 할당 받기 때문에 미리 정해져 있어야한다. * 배열의 크기는 상수만 사용 가능하다. ex) int value로 const를 빼면 에러가 발생 * 주소를 변경하는것은 불가능하다. 동적 배열 int index; std::cin >> index; int*a = new int[index]; int*b = new int[index]; int*sum = new int[index]; 정적 배열과는 달리 상수가 아니라도 배열의 지역변수로 ..

[Unity 3D] 유니티 3D : 플레이어와 카메라 사이 벽이 있다면 통과하기 [내부링크]

플레이어가 이동중 플레이어와 카메라 사이 장애물, 벽이 있다면 플레이어가 가려지니 Raycast를 이용하여 통과하도록 해보겠습니다. Rookiss님의 강의를 보고 작성한 글입니다. 출처 : [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 - 인프런 | 강의 (inflearn.com) 소스코드 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 dist =..

[Unity 3D] 유니티 3D : 마우스로 오브젝트 이동 [내부링크]

이 글은 Inflearn - Rookiss : C#과 유니티로 만드는 MMORPG 게임 개발 시리즈 강의를 듣고 정리한 글입니다. 목차. 개요 소스코드 코드설명 개요 마우스 클릭으로 캐릭터를 이동하는 기능이 많은 게임에서 이용되는데 예를들어 스타크래프트, 리그오브레전드 등이 있고 주로 마우스를 우클릭을 하면 해당 지점으로 캐릭터가 이동을 하는데 이것을 코드로 구현해보겠습니다. 소스코드 float _speed = 10.0f; bool _moveToDest = false; Vector3 _destPos; RaycastHit hit; void Start() { Managers.Input.MouseAction -= OnMouseClicked; Managers.Input.MouseAction += OnMouseC..

[백준][C++] 10950 문제 : A+B -3 [내부링크]

2023.07.01 문제 풀이 결과 : 오답 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 나의 풀이 #include int main() { int num; int num2; std::cin >> num >> num2; if ((num > 0 && num < 10) && (num2 > 0 && num2 < 10)) { std::cout T; // 테스트 케이스의 개수 T 입력 받기 for (int i = 0; i < T; i++) { int A, B; std::cin..

[백준][C++] 2480 문제 : 주사위 세개 [내부링크]

2023.06.29 문제 풀이 결과 : 오답 문제 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6..

[백준][C++] 2525 문제 : 오븐 시계 [내부링크]

2023.06.29 문제 풀이 결과 : 오답 문제 KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)..

C++ : 입력 출력 [내부링크]

C++에서 입출력을 하기 위해서는 기본적으로 헤더 파일을 포함해야 합니다. 헤더 파일은 기본적인 입출력 작업을 지원하는 라이브러리입니다. 출력 사용할 수 있는 출력 방법으로 두 가지 정도가 있습니다. 1. std::cout >을 추가하여 입력을 할 수 있습니다. 이때 자료형은 달라도 무관합니다. 코드 개선 매번 std를 입력하는 것은 매우 번거로운 일이기 때문에 std를 생략하고 싶다면 using namespace std;를 선언하면 됩니다. 현재 상태로 출력이될때 줄넘김이 되지않아 조금 깔끔하게 보이지가 않습니다. 원하는 지점에 \n을 추가하면 줄넘김이 되는 모습을 볼 수 있습니다.

[Unity] 유니티 : Cinemachine Body Follow Offset 스크립트 수정 [내부링크]

유니티 시네머신 카메라에 공동적으로 들어가 있는 Follow Offset이다 다양한 연출을 위해 해당 값을 코드로 제어해야 할 일이 종종 있는데, 어떻게 접근해야 수정이 가능할까? GetCinemachineComponent(); FollowOffset 값을 제어하기 위해서는 해당 시네머신의 CinemachineTransposer에 접근해야한다.

[Unity] 유니티 : 애니메이션 이벤트 추가하기(ReadOnly도 가능) [내부링크]

애니메이션 이벤트란? 애니메이션 클립에서 특정 프레임에서 사용자가 지정한 함수를 호출할 수 있는 기능입니다. 예시로 플레이어가 공격을 하는 애니메이션에서 공격 타이밍에 맞춰 파티클을 실행하는 함수를 호출한다는 등 다양한 활용이 가능합니다 사용 예시) -> 애니메이션의 프레임에서 파티클을 실행하는 함수를 애니메이션 이벤트를 통해 호출한 모습. 애니메이션에 이벤트를 추가하는 방법은 2가지 정도가 있습니다. 애니메이션 클립에서 추가 (Read-Only 애니메이션은 불가능) 1. 애니메이션 클립을 더블클릭 2. 원하는 지점에서 애니메이션 이벤트 생성 3-1. 생성한 애니메이션 이벤트를 클릭 -> 호출하려는 Object를 할당하고 함수명을 입력(애니메이터 컴포넌트와 같은 위치에 있는 클래스를 할당해야함) 3-2...

현존하세요 개인정보처리 방침 [내부링크]

< Exist >('https://cafe.naver.com/copm9'이하 '현존클럽')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. 이 개인정보처리방침은 2023년 4월 20부터 적용됩니다. 제1조(개인정보의 처리 목적) < Exist >('https://cafe.naver.com/copm9'이하 '현존클럽')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. ..

[알캡처] 캡처 프로그램 알캡처 사용법 [내부링크]

평소에 다들 캡처 프로그램 많이 사용하시죠? 다양한 형태로 각자 캡처를 할고 있으실 텐데 실무에서도 잘 쓰이며 편리한 캡처 프로그램 알캡쳐에 대해 사용법부터 해서 알려드리겠습니다. 평소 캡처를 하려면 작업표시줄에 기본 프로그램인 캡처 도구를 검색해서 필요한 부분을 캡처하곤 했습니다. 새로 만들기를 눌러 필요한 부분을 캡처하거나 모드를 통해 전체 화면 창화면 등을 캡처했었어요 그런데 큰 불편함은 못느꼇으나 알캡처를 사용하고나서부터 지금까지 얼마나 불편하게 사용했는지 체감이 되더라고요. 알캡처 | 공식 다운로드 (altools.co.kr) 알캡처 | 공식 다운로드 모니터 화면 안의 무엇이든 원하는 순간에 보이는 그대로 캡처해주는 프로그램으로 생산성을 향상해보세요 www.altools.co.kr 링크를 통해 ..

[Remove.bg]실무에서 쓰이는 사진 배경 편집 ,자동 배경 삭제 [내부링크]

인물사진이나 물건 등 다양한 사진에서 배경 편집이 필요할 때가 있습니다 전에는 포샵이나 그림판 등의 프로그램을 사용해서 손수 편집하는 번거로움이 있었지만 Remove.bg에서 사진을 업로드하니 5초 만에 너무 깔끔하게 배경이 편집되니까 정말 놀랐어요. 이미지 업로드 – remove.bg 이미지 업로드 – remove.bg 이미지 선택 & 무료로 – 한 번의 클릭도 없이 – 5초 안에 – 100% 자동으로 – 배경 삭제. www.remove.bg 해당 홈페이지를 들어가면 가장 먼저 사진과 같은 모습이 나옵니다. 파란색 배경이 보이는 이미지 업로드를 눌러 아무 이미지를 업로드 해보겠습니다 저는 경주 노워즈 카페에 갔을 때 찍은 커피 사진을 한번 업로드해봤습니다. 참고로 사진을 업로드하고 다운로드를 받으려고하..

[OBS Studio]화면 녹화 프로그램 설치 및 사용 [내부링크]

제가 지금까지 여러 영상 녹화 프로그램을 사용해봤는데 그중 제일 사용하기 쉽고 기능적으로도 매우 만족스러웠던 프로그램 OBS Studio를 설치하고 작동해보겠습니다 OBS Studio - 나무위키 (namu.wiki) OBS Studio - 나무위키 이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권 namu.wiki Open Broadcaster Software | OBS (obsproject.com) Open Broadcaster Software | OBS 영상 녹화와 실시간 방송을 할 수 있는 무료 및 공개 소프트웨어입니다. 윈도우, 맥 혹은..

[Tableau]- 빅데이터 분석 프로그램 설치 [내부링크]

태블로[Tableau] -태블로는 스탠퍼드 출신 엔지니어들에 의해 2010년대에 개발이 시작되어 직관적이고 빠른 처리속도와 엑셀보다 나은 비주얼화, 다른 분석툴보다 쉬운 분석과정과 유려한 차트 그래프 등의 시각화 결과, 분석 결과의 유연한 공유가 가능해 비즈니스 등에서 활용도가 높아지고 있다. 심지어 대표적인 ArcInfo 등 GIS 소프트웨어 보다 지리정보 시각화가 훨씬 고급스럽다는 평도 있다. 더보기 또한 데이터 분석 시 가장 많은 시간을 소요하는 데이터 정제 과정에서의 툴을 별도로 제공하고 있으며, 데이터를 온라인에서 공유하거나 별도서버 등으로 사내에 공유하는 패키지도 있다. 이를 통해 분석 결과를 온라인에서 공유하고, 협업하는 것도 가능하다. 이러한 툴을 Business Intelligence (..

[Movavi] 영상 편집 프로그램 영구권 싸게 사는법 (2만원대) [내부링크]

최근 미디어 콘텐츠가 유행하면서 포트폴리오 , 유튜브, 블로그, 발표자료 등 영상 업로드를 위해 영상 편집 프로그램이 많이 쓰이고 있습니다 무료 영상 편집 프로그램도 있지만 기능이나 퀄리티 부분에서 만족스..