본문 바로가기
728x90

전체 글102

[Unity] 애니메이션 진행 중인지 확인하기 애니메이션이 진행 중인지 확인하는 기능은 여러 상황에서 사용하게 된다. 공격 애니메이션이 끝났는지, 죽는 모션이 끝났는지 등등 특정 애니메이션이 종료된 이후 처리해야할 기능들이 여럿 있기 때문이다. 간단하게 animator.isPlaying 같은 함수가 있으면 좋겠으나 기본적으로는 없기 때문에 유니티에서 애니메이션이 현재 플레이 중인지 확인하는 코드를 추가해보자. { Animator anim; void Awake() { anim = GetComponent(); } void Update() { ... // 현재 애니메이션이 체크하고자 하는 애니메이션인지 확인 if(anim.GetCurrentAnimatorStateInfo(0).IsName("애니메이션 이름") == true) { // 원하는 애니메이션이라.. [Unity]/기능 2023. 1. 11.
[유니티] 2D 중력 조절 (unity Gravity Scale) 유니티에서 작업할 때 중력을 조절해야 할 때가 있다. Rigidbody2D에 걸리는 중력의 스케일을 처리하는 방법은 2가지가 있다. [ 프로젝트 세팅에서 변경 ] 첫번째로 프로젝트 세팅에서 프로젝트 전체에 걸리는 중력을 조절하는 방법이다. [Edit] - [Project Settings]를 클릭하면 프로젝트 전체 세팅을 변경할 수 있는 창이 나타난다. 여기서 [Physics 2D]를 선택하면 Gravity가 있다. 기본적으로 Y 축 중력이 -9.81로 세팅되어 있는데 이를 더 작게 하면 객체에 걸리는 중력이 강해진다. 음수로 하면 아래로 중력이 가해지고 양수로 하면 위로 중력이 가해진다. 즉, 양수로 설정해놓으면 게임 시작 시 모든 객체가 위로 솟구친다. 이러한 프로젝트 세팅에서 중력을 변경하는 방법은 .. [Unity]/기능 2023. 1. 10.
[Unity] 유니티 2D 레이캐스트로 충돌 판정 처리하기 유니티 내에는 충돌과 관련해 상태를 변경할 수 있는 방법이 많이 있지만 Raycast를 이용하여 충돌을 체크하는 방법을 사용해본다. Raycast에서 Ray란 특정 좌표에서 방향과 길이를 가진 광선을 의미한다. Raycast는 이러한 Ray와 부딪힌 오브젝트(객체)가 있는지 체크하는 기능을 말하며 유니티 내에서 기본적으로 콜리전이 있어야 Raycast에 체크된다. 먼저 Debug.DrawRay를 이용하여 일정한 광선을 발사해보자. Debug.DrawRay 함수는 Debug 안에 있기 때문에 Game패널에서는 나타나지 않고 Scene에서만 나타난다. 즉, 디버깅 용도에서만 렌더되기 때문에 실제 게임이 출시되었을 때 유저가 볼 일은 없다. FixedUpdate에서 호출하였는데 Update에서 호출해도 문제는.. [Unity]/기능 2023. 1. 9.
[C++] 함수 오버라이딩의 특수 케이스 함수 오버라이딩을 하다보면 의도하지 않은 동작을 할 때가 있다. 부모 클래스와 자식 클래스가 static 함수를 같은 이름으로 둘 다 들고 있다거나, 오버로딩 된 함수의 일부만 오버라이딩 한다거나 하는 등의 일들이 발생한다. 이러한 예외적인 상황에 대해 알아본다. 동일한 이름의 static 함수 처리 부모 클래스의 오버로딩한 함수 중 일부만 오버라이딩 하는 경우 Public이 아닌 함수의 오버라이딩 부모 클래스 함수에 디폴트 매개변수가 있는 경우 오버라이딩 함수의 접근 지시자가 다른 경우 [동일한 이름의 static 함수 처리] 기본적으로 C++에서는 static 함수를 오버라이드 할 수 없다. 애초에 virtual 과 static 을 동시에 사용할 수가 없기 때문에 컴파일 자체가 불가능하다. 그러나 같.. [프로그래밍 공부]/C&C++ 2023. 1. 9.
[Unity] 에셋스토어에서 유니티 프로젝트로 에셋 임포트하기 유니티 에셋스토어에는 굉장히 많은 에셋이 존재한다. 고퀄리티의 유료 에셋부터 무료 에셋까지 다양한 자료들을 구매하여 사용할 수 있는데 런처에서 쉽게 임포트할 수 있는 언리얼과 달리 유니티는 별도의 방법이 필요하다. 그 방법에 대해 알아보자. 우선 에셋스토어에서 원하는 에셋을 구매한다. (https://assetstore.unity.com/) 내 에셋에 추가하기를 클릭하고 추가하면 내 에셋 보기와 유니티에서 열기가 있다. 유니티에서 열기를 누르면 유니티에서 패키지 매니저가 열리지만 항상 에셋 스토어를 열어서 유니티에서 열기를 누르기엔 불편함이 있다. 유니티에서 에셋 리스트를 확인할 수 있는 패키지 매니저를 열어보자. [Window] - [Package Manager] 를 클릭하면 패키지 관리 창이 나타난다.. [Unity]/기능 2023. 1. 8.
[Unity] 유니티 2D에서 객체별 렌더 순서 변경하기 3D 환경에서는 원근투영으로 인해 카메라와 가까울수록 사물이 크게 보이고 잘 보여진다. 그러나 2D 환경에서는 직교투영에 의해 원근법이 적용되지 않아 모든 객체가 같은 Z축에 있는 것처럼 보인다. 이 때문에 큰 객체가 작은 객체를 가려서 전혀 보이지 않는 현상이 발생하는데 이를 렌더 순서를 변경하여 수정할 수 있다. 1. Z 값 수정하기 유니티에서 카메라를 Ortho로 설정한다하여도 여전히 Z축과 Z값은 존재한다. 다만 존재할 뿐 값을 변경하여도 확대되거나 작아지지 않는다. 대신 이러한 Z값을 사용하여 렌더 순서를 변경할 수 있다. 카메라의 위치를 변경하지 않은 기본 상태에서는 Z값이 작을수록 앞 쪽에 렌더된다. Z값을 이용하여 정렬하였을 때의 또 다른 장점은 개발 중의 씬에서 쉽게 확인이 가능하다는 것.. [Unity]/기능 2023. 1. 8.
[Unreal 5] 라이트 종류 알아보기 (포인트 라이트, 스포트 라이트, 렉트 라이트, 디렉셔널 라이트, 스카이 라이트) 언리얼5에는 5가지 기본 라이트가 존재한다. 포인트 라이트, 스포트 라이트, 렉트 라이트, 디렉셔널 라이트, 스카이 라이트가 그것인데 하나씩 알아보자. 우선 언리얼에서 제공하는 라이트에 대해 알아보기 전에 라이트와 관련하여 몇 가지 알아야할 용어가 있다. 스페큘러(Specular) : 어떠한 물체 표면에 맺히는 라이트의 강조된(하이라이트) 부분을 말한다. 강도(Intensity) : 빛의 세기, 높을수록 밝아진다. 디렉셔널 라이트는 빛의 조도를 나타내는 럭스(Lux)단위를 사용하며 1럭스는 1 제곱미터 당 1루멘이 비출 때의 조도를 의미한다. 포인트, 스포트, 렉트 라이트는 빛의 광도를 나타내는 칸델라(cd)단위를 사용하며 1칸델라는 1스테라디안 당 나오는 빛의 세기를 의미한다. 감쇠 반경(Attenua.. [Unreal5]/기능 2023. 1. 6.
[Unity] 키보드, 마우스 입력 처리 받기 유니티에서는 Input 클래스를 통해 입력을 받을 수 있다. Input은 유니티가 제공하는 입력을 총괄하는 클래스이다. 입력은 크게 3가지 상태로 처리되는데 Down, Stay, Up 이다. Down은 눌렀을 때, Stay는 눌리고 있는 중일 때, Up은 뗐을 때를 의미한다. [ 단순 입력 처리 ] 게임에서 그 어떤 입력이라도 받는다면 Input.anyKeyDown이 True가 된다. 어떠한 게임이 로딩이 모두 완료되어 "Press Any Key" 또는 "아무 키나 입력" 같은 화면이 나왔을 때 유저가 어떤 키를 누르더라도 다음 화면으로 넘기고 싶다면 Input.anyKeyDown이 True일 때를 체크하면 된다. 만약 아무 키나 누르고 있는 상태를 체크하고 싶다면 Input.anyKey가 True인지 .. [Unity]/기능 2023. 1. 5.
728x90