unity(35)
-
[Unity] SendMessage와 BroadcastMessage
Unity 공부를 하다가 MonoBehaviour 클래스에서 제공하는 "SendMessage()"와 "BroadcastMessage()" 기능을 봤다. 위 함수들을 이용하여, 게임 오브젝트에 붙은 모든 컴포넌트의 함수를 이름으로 실행할 수 있다고 한다. 일반적으로 클래스에 접근하기 위해선, 객체를 가리키는 참조 변수를 통해 해당 클래스의 멤버 변수와 함수에 접근하게 된다. 하지만, "SendMessage()"와 "BroadcastMessage()"는 실행할 함수의 이름만 알고 있다면 참조 과정을 거치지 않아도 된다. SendMessage() 다음은 Unity API Documentation에 적혀있는 함수의 원형이다. public void SendMessage(string methodName, objec..
2022.02.22 -
[압량(Amnyang)] #13. 2D 게임 적(Enemy) 패턴 구현하기
이 때까지 플레이어 캐릭터, 조명 처리, 배경 세팅 작업을 진행했었다. 오늘은 플레이어를 방해할 경관(Police) 패턴을 만들어볼 생각이다. 공포 게임 특성상, 좀 어두워 보여야 하기에 유니티 스프라이트 렌더러에서 색감을 어둡게 낮췄다. 이제 차례대로 한 번 만들어보자. 1. 경관 외관 세팅하기 평소 상태(Idle), 걷기(Walk), 인기척 감지(Feel) 애니메이션은 다른 팀원이 만들어준 상태다. 따라서, 이번에는 따로 애니메이션 작업을 안 해도 됐다. 다만, 원래 기획서 상에는 이런 내용이 없었지만 우리가 개발하는 게임이 공포게임인큼 좀 더 확실한 이펙트를 주고 싶었다. 경관이 들고 있는 손전등에 라이트(Light)를 달아줬다. 흰색이나 노란색 조명은 오히려 플레이어를 구하러 온 경관 느낌이 났기..
2022.02.21 -
[Unity] "Universal RP Light 2D"를 스크립트 제어하기
다음 💡네임스페이스 사용 선언이 필요하다. using UnityEngine.Experimental.Rendering.Universal; 그리고 사용하면 된다. 다음처럼 GetComponent()로 불러와도 되고, 변수를 public으로 선언하여 인스펙터에서 넣어서 사용해도 된다. private Light2D _light; void Start() { _light = GetComponent(); }
2022.02.20 -
[압량(Amnyang)] #12. 2D 캐릭터가 벽에 달라붙는 버그 수정 + 평상 밑에 숨기 구현하기
게임 하다가 한 번씩은 그래도 깜짝(?)놀랄만한 공포 이벤트를 저번 시간에 만들었다. 이번에는 적(무당)의 집 평상 밑에서 숨기 버튼('F키')를 눌렀을 때, 숨도록 하는 기능을 만들어야 한다. 1. 시작하자마자 버그 마주치기 평상 부분이 레이어가 나뉘어져 있지 않아서, 유니티에서 오브젝트로 존재하지 않는 상황이다. 그래서 발판으로 사용하기 위한 빈 오브젝트를 생성하고, 콜라이더를 부착해줬다. 그리고 테스트를 위해, 캐릭터를 조작하여 달리면서 점프하여 평상 위로 올라가게 하려했다. 근데 만약 점프 중간에 평상 측면 콜라이더 부분에 닿이게 되면 아래와 같이 낀 것처럼 된다. 정상적인 상황이라면, 위와 같이 끼었다면 방향 조작이 있다 하더라도 중력에 의해 자연스럽게 아래로 미끄러져 내려와야 한다. 뭐가 문제..
2022.02.19 -
[Unity] 일방향 충돌, 측면 마찰 및 반발력을 설정할 수 있는 Platform Effector 2D
Platform Effector 2D 콜라이더에 일방향 충돌, 측면 부분의 마찰력/반발력 제거 등의 설정할 수 있는 컴포넌트 메이플스토리의 지형을 보면, 땅의 윗 부분은 충돌이 일어나지만 아랫 부분은 일어나지 않는다. 이런 일방향 충돌을 구현할 수 있다. 그 외에도, 2D 캐릭터가 벽면 콜라이더 오브젝트의 마찰력 때문에 벽에 끼어서 자연스럽게 내려오지 않는 상황도 해결할 수 있다. 이펙터(Effector)와 함께 사용하는 콜라이더는 다른 콜라이더와의 충돌을 위해, 일반적으로 트리거 모드로 설정되지 않는다. 이펙터를 적용할 콜라이더의 Used By Effector 프로퍼티를 활성화해야 한다. Platform Effector 2D의 프로퍼티 Used Collider Mask : Collider Mask 프로..
2022.02.19 -
[Unity] C# 접근 한정자 + 인스펙터에서 변수 확인하기 (Debug Mode)
C#의 접근 한정자(Access Modifier) 찾아보니, C#은 대략 다음과 같이 6개 종류 정도의 접근한정자(Access Modifier)가 있는 것 같다. public class Test : MonoBehaviour // 유니티에서 작성함 { public float publicVar; private float privateVar; protected float protectedVar; internal float internalVar; protected internal float ptItVar; private protected float prprVar; } .NET C# 가이드 문서를 보면 다음과 같이 설명이 되어 있다. 여기서 "동일한 어셈블리 내에 있는" 이런 문장은 같은 프로젝트 파일 내에 있다..
2022.02.15