오브젝트를 움직이는 데 아는 방법들을 정리해보려고 한다.새로운 내용을 아는데로 계속 추가해나갈것.제일 기본적인 방법으로는 transform.position에 vector3 값을 직접 넣거나 연산을 하여 움직이게 하는 방법이 있다. 이 방식대로하면 순간이동을 하게된다.
객체를 상태로 정의하는 것으로,유한한 갯수의 상태를 관리하게 되고한 번에 하나의 상태만 가지게된다.FSM의 요소State(상태): 객체의 상태Transition(전이): 상태의 변화Condition(조건): 전이하기 위한 조건\[링크]
Raycast란 오브젝트에서 광선을 쏘는 걸 말하고,레이캐스트를 사용한다면 광선에 맞는 collider에 대한 거리,위치 등의 정보를 RaycastHit으로 return한다.레이캐스트는 충돌한 collider을 반환하므로오브젝트에 collider가 없다면 레이캐스트는
Update() - enabled가 true일 때, 매 프레임마다 호출 된다.일반적으로 물리효과 적용 안 된 단순한 오브젝트 움직임이나 키입력에 사용된다. Fixed Update() - 매 프레임마다 호출되지 않고, Fixed Timestep에 설정된 값에 따라 일정한
기본 함수 선언은 이런 식으로 하고DFS방법을 이용해 Type에 해당하는 오브젝트들을 찾아 반환한다. includeInactive는 inactive인 자식 오브젝트도 반환할건지 여부를 설정해주는 것이고,디폴트는 false로 만약 inactive인 자식오브젝트 반환하려면
이런식으로 image컴퍼넌트를 가져온다음 image컴퍼넌트의 색의 알파값을 변경하려 했으나read-only값이라 변경할 수 없었다.검색하여 찾은 방법은알파값이나 r,g,b값을 별도로 바꿀 순 없고 Color에 해당하는 벡터자체를 변경해서 넣어줘야한다는 것이다.예시로는
UI용 TMP의 list를 선언해서 이런식으로 넣어주는 코드였는데 NullReferenceException: Object reference not set to an instance of an object갑자기 이게 떠서 당황했다.CList를 선언만 하고 new연산자를
유니티에서 GetComponentsInChildren함수를 사용하는 도중 부분에서transform child out of bounds 오류가 계속 떠서 찾아봤다.찾아보니 transform에 자식이 없거나 자식 수보다 더 큰 값을 call할시 뜨는 오류였다.이상해서 각
buttonButtons에 getcomponentsinchildren()함수를 사용해 버튼들을 다 넣어준 후,반복문,delegate함수를 통해 각각 버튼에 onClick.AddListener함수로loadGame함수를 넣어주려했으나 먹통이 되었다. 이유는 반복문을 통해
게임오버가 되었을 때게임오버 화면에 있는 Game Over스프라이트에 입힌 애니메이션이작동을 안해서 한참을 고민했다.그러던 중, 인게임 내에서 게임오버 화면을 호출했을 땐 작동이 잘 되는 걸 보고Time scale에 문제가 있다고 생각이 들어서 찾아봤다.animatio
스크립트의 onEnable함수에서 버튼 리스너를 동적할당해줬다.하지만, 막상 실행하고 버튼을 클릭해보니 Method arguments are incompatible 오류가 계속 떠서 당황했다.찾아보니 저 오류는 버튼클릭에서 호출하는 함수의 인자가 모순적이라는 뜻이였다.
개요 깃헙 데스크탑을 이용해 유니티 협업을 하는데 브랜치를 새로 파서 커밋을 하니 > "warning: LF will be replaced by CRLF" 에러가 엄청 떠서 당황했다. 해결 방안 이번 경우는 인터넷 검색을 해보니 깃허브데 스크탑 사용할 시 .giti
사실 너무 기초적인 실수라 블로그에 적기도 민망하지만 시간을 너무 많이 쏟아서 화나기도 하고 나중에 또 이 부분 체크할 수 있도록 한다.buttonUp, buttonDown에 해당하는 함수를 바꿔썼다 ㅜ.ㅜpointer up에 buttonDown함수를 집어넣고 poin
개요 unity의 ui중 canvas 컴퍼넌트의 Render Mode를 정리한 문서 Screen Space - Overlay 캔버스가 씬내부 아무곳에 위치해도 게임씬 전체를 덮는 형식으로 렌더링된다. 스크린의 크기가 조절되거나 해상도가 변경되면 캔버스는 여기에
\[캔버스 렌더 모드] 이 게시글이 사실 캔버스 렌더모드에 따라 캔버스 UI좌표가 달라져서 한참 고민하다가 해결하고 정리한 글이다.처음엔 캔버스 렌더 모드가 씬에서 보는 관점만 바꿔준다고 생각하여 체력바 UI를 월드내의 몬스터 밑에 달려고 할 때,Screen Spac
개요 원래 3.5.1을 사용했는 데 플레이스토어에서 sdk업그레이드 안하면 업데이트 게시가 거부된다고 해서 sdk를 제일 최신인 4.3.0으로 업데이트 해줬다. 문제는 iunityadslistener인터페이스를 사용하는게 에러가 나는 것이였다.
함수의 원형bool 형의 함수로 해당 타입의 컴퍼넌트를 찾았다면 true반환, false 반환하는 함수이다.찾았다면 out되는 component에 해당 타입 컴퍼넌트를 할당해준다.GetComponent는 해당 타입의 컴퍼넌트를 찾지 못했을 때 memory allocat
유니티에서 2D나 3D에서 마우스 클릭으로 해당 오브젝트 정보 읽어오는 부분은 레이캐스트를 이용해 구현을 하였다.하지만, 인벤토리를 만들어 보려고 캔버스 위에서 슬롯과 아이콘오브젝트를 레이캐스트를 이용해 움직이려 했으나 반응하질 않았다.늘 그랬듯이 인터넷을 뒤적인 결과
as 연산자는 객체에서 캐스팅 할 때 형변환이 가능하면 형변환을 수행하고, 그렇지 않으면 null 값을 return하는 연산자다. 명시적 형변환을 하는 과정에서 System.InvalidCastException오류를 뱉어낼 때가 있다. 예를 들어 부모 객체를 자식객
인벤토리 UI시스템을 구현하는 중, 아이템 드래그 부분을 구현중이였다.아이템을 드래그한다면 드래그 중에 해당 아이템이 제일 앞에 위치해야하는데 어떤 방법을 사용하는지 궁금했다.하이러키의 local transform list에서 해당 오브젝트 순위를 맨 밑으로 보낸다.\
유니티에서 제공하는 텍스트 기능인 TMP유니티 매뉴얼에서 제공한는 설명에 따르면 TextMeshPro는 Unity를 위한 최고의 텍스트 솔루션으로, Unity의 UI 텍스트와 레거시 텍스트 메시를 완벽하게 대체합니다.강력한 기능과 뛰어난 사용성을 자랑하는 TextMes
2차원 List <string>를 사용해야하는데 List를 담는 List부분만 초기화를 하고싶은데 어떻게 하는지를 모르겠어서 찾아봤다. C++의 벡터같은 경우는 이런식으로 하면 vector<string> 3개를 담는 벡터 v가 생성되어서 v2, v1 이런식으
해당 맵의 이름을 파일이름으로 저장 후 이름들을 불러와 배열에 저장할 일이 필요해서 이것저것 찾아보다가 폴더안의 파일이름들을 불러오는 방법을 찾아서 정리해두었다.기본적으로 폴더를 Killing, Sneaking, miniBoss로 나누고,해당 폴더마다 Easy, Nor
기본적으로 모든 monobehavior의 Awake()함수가 다 끝난 후, Start(), OnEnable()함수 순으로 실행되는 줄 알았는 데,OnEnable함수가 먼저 실행되고 Awake가 실행되어서 많이 당황했었다.\-> 오브젝트가 부모 자식관계가 존재한다면,자식
이런 식으로 파티클시스템을 인스펙터창에서 붙여넣어준 후,해당 파티클의 색을 스크립트로 변경하려 했다.이런식으로 해당 파티클시스템의 main을 호출해서 부르니 해당값에 직접 set이 안 되었다.검색해보니이런 식으로 따로 할당을 한 후에 변경해줘야했다.
오브젝트의 local active state를 반환한다. 무슨 뜻이나면 부모 오브젝트의 setactive가 false라도 자식 오브젝트가 true라면 true를 반환한다.오브젝트의 active state를 반환한다.자식 오브젝트가 setactive true 상태라도
코루틴을 사용할 때,뭐 이런 식이라던지 다양한 WaitFor친구들을 (WaitForFixedUpdate,WaitForEndOfFrame등등)new 연산자를 통해 새로 만들게 되는데결국 새로 인스턴스들이 만들어지므로 가비지가 생성된다. 따라서 이런식으로 캐싱을 해줘서 사
공격범위를 빨간색으로 띄우고 공격 스프라이트를 띄우려했다.공격범위를 해당 스프라이트 크기만큼 설정하면 편할거같아서 검색해봤다.이런 식으로 해당 스프라이트의 bounds 값을 불러오면 사이즈가 된다.
Vector3.dot 함수를 이용해 두 사이의 각도를 구하려는데 뭔가 하고 로그 찍어보면서 분석해봤다.이런식으로 오브젝트가 바라보는 벡터랑 오브젝트에서 플레이어로 향하는 벡터의 코사인 값을 Dot를 통해 구한 후, 아크코사인을 통해 라디안을 구하고 Rad2Deg값을 곱
시네머신을 사용해야해서 시네머신을 공부하던 중 이분의 블로그에서 재밌는 효과를 발견해서 작성한다.영상 링크유니티블로그에서도 소개되는 기능이다.오브젝트의 proximity보다 가까이 가게되면 해당 오브젝트쪽으로 카메라가 움직이는 방식이다. CinemachineTarget
Rect Transform의 Width, Height를 스크립트로 변경하려했는데 어떤 프로퍼티에 접근해야하는질 모르겠어서 찾아본결과다.이 sizeDelta가 width, height를 관리해서 sizeDelta.x, sizeDelta.y값을 불러와 width,heigh
스킬을 구현중에 scriptableObject를 사용해보고 싶어서 이분의 강의를 듣던중https://www.youtube.com/watch?v=cy49zMBZvhg프로퍼티함수는 serializeField로 attribute를 지정하지 않고field: Seria
유니티를 GitHub에 올려 작업을 하려했다. 다른 분들의 Github을 보면 Asset, ProjectSetting 정도만 올라와있는데,내가 올려보니 Asset부터 Library, usersetting, log 등등 모든 폴더가 다 올라갔다.. 딱봐도 .gitigno
A\* 알고리즘 - 가중치추가방금 올린 게시물이다.정리하면서 여러 레이어마스크를 활용하는 부분이 되게 인상깊어서 레이어마스크 부분만 따로 정리하는 게시물이다.Unity의 Layermask는 32개의 비트로 이뤄져 있다.Layer을 6번으로 설정했다고 하면 6번째 비트가
에셋을 임포트했는 데 한 스크립트가 컴포넌트로 붙어있는 오브젝트를 찾아야 하는 상황이였다.어디에 붙어있는지 당최 알 수 없어서 하나하나 다 찾아보다가 화가나서 검색했다.Find References in Scene으로 검색하면 하이러키에 오브젝트들이 쭉 뜬다!
이미지 바깥 부분을 클릭해 이미지를 닫게하는 부분을 구현해보려했고, UI부분은 아직 잘 모르겠어서 검색해봤다.찾아본 방식은 RectTransformUtility의 RectangleContainsScreenPoint 함수를 사용하는 방식이다. 마우스 입력이 되면 해당 위
이런 모양의 버튼을 캔버스에 추가한 후, 이미지를 뒤집고 싶어서.rect transform에서 y축으로 180도 회전을 시켰다,문제는 그 후로 button컴퍼넌트가 아예 작동이 되지 않았다.여기저기 검색해봤으나 첫번째 댓글의 facing direction때문인거 같다버
개요 이런 형식의 event나 이런 유니티 이벤트 형식을 자주 봤지만 익숙하지 않아서 정리하는 글이다. > https://gamedevbeginner.com/events-and-delegates-in-unity/ 이 분의 포스팅을 읽고 요약,정리해보는 글이다.
커서를 움직여 선을 그리고 싶어서 line renderer에 대해 간단하게 검색해보고 적는 글이다. https://www.youtube.com/watch?v=M4247oZ8sEI 이 유튜브를 통해 공부했다.우선 line renderer컴퍼넌트를 빈 오브젝트에게
유니티 UGUI에서 부모 자식 오브젝트 간에서 종횡비를 조절할 수 있게 해주는 컴퍼넌트다.위 사진처럼 두 가지 설정해줄 요소가 있는데 1\. aspect mode2\. aspect ratio이다.유니티 document에 적힌 프로퍼티들이다.주의할점은 Envelope P
GridBackground는 graph view에서 default background이다.유튭을 참고하며 Ui builder을 이용해 유니티에서 작업중 uss파일에서 GridBackground property를 건드려보던 중 계속 grid적용이 안되었다..이것저것 찾아
적 투사체가 화면 바깥에서 돌진하고 있을 때, 플레이어에게 알려주기 위해서 느낌표를 해당 방향에 띄우려고 시도했다.우선 떠오른 방법은 플레이어 위치와 카메라 너비 계산하기 였다.코드로 구현 중 예전에 배웠던 camera의 viewport가 떠올랐다.viewport내부에