Angel Wing Heart

언어 / 엔진

언어 / 엔진/C++

[C++] 객체 생성 방법 (Stack, Heap)

객체 생성 방법 C++에서는 객체를 생성할 때 두가지 방법을 사용할 수 있다. 각 방법에 따라 객체가 할당되는 메모리 영역이 달라진다. 1. Stack에 할당 일반적인 변수와 같이 선언한다. Foo obj1 = Foo(5); Foo obj2(10); 2. Heap에 할당 new 키워드를 사용하여 선언한다. Foo* obj3 = new Foo(20); 운영체제 시간에 배웠듯이, Stack 메모리 영역은 변수를 선언한 스코프 영역을 벗어나면 자동으로 메모리가 해제되지만, Heap 메모리 영역은 프로그래머가 관리해야 하는 영역이므로 자동으로 해제가 되지 않는다. 위 코드의 obj3을 보면, new 키워드를 이용해 Heap 메모리에 객체를 할당하고 있다. 포인터는 Stack에 있고, 실제 객체의 데이터는 Hea..

언어 / 엔진/C#

[C#] 매개변수로 클래스를 넘길 때 ref 키워드에 대해

들어가며 C#에서는 클래스가 참조 타입이기 때문에 매개 변수로 넘길 때도 힙 메모리를 가리키는 포인터를(주소값) 넘기는 것으로 알고있다. 그러면 ref 키워드를 안써도 원본의 값을 변경할 수 있는데 왜 ref 키워드를 쓰는거지? 궁금해서 찾아보다가 정리하게 되었다. 클래스의 멤버 변수는 바꿀 수 있다. using System.Collections.Specialized; using System.Linq.Expressions; namespace Test { class Program { class Point { private int x; private int y; public Point(int _x, int _y) { x = _x; y = _y; } public void AddPoint(Point pos) /..

언어 / 엔진/C++

[C++] 코테 입출력 속도 높이기

ios_base::sync_with_stdio(0); cin.tie(0);개행할 때도 endl말고 \n 쓰기

언어 / 엔진/C++

[C++] 우선순위 큐 정렬하기

헤더 #include 기본 priority_queue pq; //내림차순 priority_queue pq; //내림차순 priority_queue pq; //오름차순 커스텀 정렬 #include struct compare { bool operator()(int a, int b) { retuern a > b; } }; priority_queue pq;

언어 / 엔진/Unity

[Unity] 타이머 구현

벨로그에서 2023년 7월 21일에 포스팅한 글을 이전한 글입니다. 두가지 형태의 타이머 구현 타이쿤 개발하면서 손님들의 개별 타이머와 전체 타이머를 구현했다. 개별 타이머는 바 형식, 전체 타이머는 숫자로 표현함 모두 코루틴을 이용하여 구현하였다. 숫자 형식의 타이머 (ToString Format) 처음에 00:00 포맷으로 어떻게 만들지 했는데 ToStrnig으로 포맷 지정을 할 수 있었다. minute.ToString("00") 형식으로 지정하면 알아서 포맷에 맞게 바꾸어줌 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class ..

언어 / 엔진/Unity

[Unity] 드래그를 통한 영역(오브젝트) 선택

벨로그에서 2022년 12월 5일에 포스팅한 글을 이전한 글입니다. 마우스 드래그를 통한 영역 선택 드래그를 통해 영역을 선택하고 2개 이상의 오브젝트들을 선택하자 구글링해보니 GUI 같은 것 밖에 안나오길래 직접 구현했다. 주로 스타크래프트 같은 RTS 게임이나 퍼즐 게임에서 사용할 수 있다. 난 사과게임 만들었음 1. 드래그 영역 그리기 MouseHandler.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MouseHandler : MonoBehaviour { [SerializeField] GameObject dragSquare; // 프리..

언어 / 엔진/Unity

[Unity] 버튼 마우스 커서 변경

벨로그에서 2022년 5월 25일에 포스팅한 글을 이전한 글입니다. 마우스 커서 변경 게임을 만들다보면 컨셉에 맞거나 예쁜 커서로 변경하고 싶은 생각이 든단 말이죠! Event Trigger를 이용해 버튼이나 오브젝트 같이 클릭 가능한 오브젝트 위에 올라와 있는 마우스 커서도 변경할 수 있음 기본 마우스 커서 변경 기본 커서의 변경은 Project Settings → Player → Default Cursor에서 원하는 커서의 이미지를 넣으면 된다. Cursor Hotspot은 커서가 클릭 될 위치?라고 보면 됨 커서의 이미지는 Texture Type을 Cursor로 바꿔준다. 나는 커서 이미지를 icons8에서 가져왔다. 근데 이게 저장한거 그대로 쓰면 커서가 너무 크길래 줄이려고 했는데, 방법을 못 ..

언어 / 엔진/Unity

[Unity] 3D LineRenderer Collider

벨로그에서 2022년 4월 7일에 포스팅한 글을 이전한 글입니다. LineRenderer에 BoxCollider / 두 오브젝트를 잇는 Collider Raycast 적용하려면 Collider를 씌워줘야 한다. 2D에서는 EdgeCollider2D로 시작점과 끝점만 설정하면 되는데, 3D에서는 불가능 해서 다른 Collider로 씌워줘야 한다. 회전이 제대로 안돼서 한참 고민하다가 자식 오브젝트와 LookAt 함수로 해결했다. 하이어라키 💡Line 오브젝트(프리팹)에 LineRenderer가 있고, 하위 오브젝트인 Collider 오브젝트에 BoxCollider가 있다. 이렇게 하는 이유는 Line에 BoxCollider를 바로 넣으면 이상한 중심축으로 회전한다. 그래서 꼭 자식 오브젝트에 Collide..

언어 / 엔진/Unity

[Unity] Raycast 3D에서 2D Collider 처리

벨로그에서 2022년 3월 27일에 포스팅한 글을 이전한 글입니다. 3D Ray에서 2D Collider 처리하기 자꾸 edge collider 충돌이 안되길래 헤맸는데 Raycast가 3D라서 2D인 edge collider는 읽지 못하는 것이었음 ... GetRayIntersection 이거 덕분인 듯? 출처 코드 void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = getCamera.ScreenPointToRay(Input.mousePosition); RaycastHit2D hit2D = Physics2D.GetRayIntersection(ray); if(hit2D.collider != null) //2D collider { Destroy(hi..

언어 / 엔진/Unity

[Unity] 벽에 튕기지 않고 슬라이드 하는 현상

네이버 블로그에서 2020년 11월 4일에 포스팅한 글을 이전한 글입니다. 오브젝트가 벽에 붙는 현상 왼쪽 벽을 보면 몬스터가 정상적으로 튕기지 않고 슬라이드 하는 것을 볼 수 있다. 로직의 문제가 아닌 프로젝트 세팅을 바꿔줘야 하는 문제이다. Velocity Threshold 유니티 물리 2D 공식문서를 보면 Velocity Threshold에 관한 설명이 나와있다. 이 값이 높아서 생기는 문제이다. Velocity Threshold 탄성 충돌의 임계값을 설정합니다. 이 값보다 상대 속도가 낮은 충돌은 비탄성 충돌로 간주됩니다. 즉, 충돌하는 게임 오브젝트가 서로 튕겨나가지 않습니다. edit > project settings > physics 2D > velocity threshold > 0.0001..

조 히
'언어 / 엔진' 카테고리의 글 목록