유니티c# 5

[유니티/C#] Action을 활용한 InputManager

Action을 이용해서 MouseAction 이벤트를 구독하고 사용하는 코드 KeyBoardAction, MouseAction을 구독한 함수들의 로직을 OnUpdate에서 Invoke()로 모두 실행한다 public class InputManager { public Action KeyBoardAction = null; public Action MouseAction = null; bool _pressed = false; public void OnUpdate() { if (EventSystem.current.IsPointerOverGameObject()) return; if(Input.anyKey && KeyBoardAction != null) KeyBoardAction.Invoke(); if(MouseAc..

[유니티/C#] 마우스 위치로 바라보기

탑다운 게임에서 마우스로 조작을 할 때 마우스 커서 위치를 바라보는 경우가 있다. private void Rotate() { // 마우스 커서의 위치를 바라봄 // ScreenPointToRay : 화면상의 점을 카메라 뷰포트 상의 원점으로 하는 레이 발사 Ray _cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition); // Vector3.up과 Vector3.zero (세계 좌표계의 원점)을 인자로 받아 Plane 객체 생성 // => 수평 평면으로 y=0을인 Plane 객체를 생성 // y=0인 평면 == 씬에서 오브젝트들이 배치되어 있는 평면 Plane _plane = new Plane(Vector3.up, Vector3.zero); // 레..

[유니티/C#] 라인렌더러를 이용한 움직이는 발판

유니티 내장 기능을 이용하여 플레이어가 올라타면 위아래로 흔들리며 움직이는 발판을 구현한다. 사용한 컴포넌트 1. LineRenderer 2. SpringJoint 발판이 될 오브젝트에 LineRenderer와 SpringJoint를 부착한다. LineRenderer에는 벽에 걸려있는 것처럼 보이는 역할을 하는 오브젝트를 부착한다. SpringJoint는 적절하게 조정한다. 전체 코드 public class Draw_MoveLine : MonoBehaviour { [Header("라인을 그리는 스크립트")] [SerializeField] private Draw_CollisionLine m_drawLine; [Header("라인의 움직일 축이되는 오브젝트")] [SerializeField] private ..

[유니티/C#] 퀘스트 시스템 만들기

이번에 만든것은 퀘스트 시스템이다. 이전에 구조를 잡아놓았던 DataClasses를 활용해 만들었다. 이전글 https://jinsso.tistory.com/10 [유니티/C#] 데이터를 관리하는 클래스 만들기 이전에 데이터를 csv에서 읽어와 저장하는 코드를 작성했었다. 하지만 기능 구현에 중점을 두고 코드를 짜다보니 보기에도, 사용하기에도 별로고 유지보수에도 별로 좋지 못했다. 이번에는 csv로 jinsso.tistory.com 이전의 스킬 시스템 구축 요청을 받았을 때의 경험이 있어서 이번에는 비교적 쉽게 만들 수 있었다. 정리를 하면 1) 1단계 퀘스트 3개를 랜덤으로 가져온다 2) 가져올 때 이전에 가져온 항목과 QuestID가 동일하면 다시 뽑는다 3) 3개가 확정이 되었다면 UI에 적용한다 ..