GPT랑 약간의 유니티 공식문서, 인프런 강의 피셜얼추 이해한 것을 토대로 쓰는 것이긴 한데 GPT가 틀렸으면 나중에 고치는 걸로 Ray에 대해 알아보기 전에 유니티의 Screen에서 마우스가 어떻게 좌표로 표시되는지 알아보기 Screen에서 표시되는 마우스 좌표 간단하게 디버깅으로 현재 마우스 위치를 출력하게 하는 것으로 어떤 좌표를 사용하는 것인지 알 수 있다. 마우스의 좌표는 screen 좌표와 viewPort 좌표로 구분되는데screen 좌표는 화면의 픽셀당 좌표를 나타내고, viewPort 좌표는 스크린 좌표랑 비슷하지만 그 정도를 비율로 나타낸다. Debug.Log(Input.mousePosition);//ScreenDebug.Log(Camera.main.ScreenToViewportP..
각각의 플레이어 오브젝트는 키를 입력받으면 오브젝트를 움직이는 함수가 필요하다. 그런데 키를 체크하는 코드를 플레이어 스크립트의 업데이트문마다 전부 넣으면 성능에 과부하가 걸린다. 그래서 프레임마다 업데이트문에 넣을 것이 아니라, 공용으로 사용하는 매니저에 넣어서만약 키보드를 눌럿으면매니저는 플레이어를 통해 이벤트를 건너받고, 매니저 스크립트 하나의 업데이트문에서 처리를 하면 좋다. 정리하자면, 업데이트 부분에서 인풋 매니저가 대표로 입력을 체크한 다음에실제로 입력이 있었으면 그 이벤트를 쫙 전파하는 형식이다.이것을 리스너 패턴이라고 한다.이 이벤트를 설정한 스크립트는 해당 이벤트를 전달받을 것이다. Managers.Input.KeyAction -= OnKeyboard;Managers.I..
프리팹이란, pre - fabrication 의 약자로유니티 Hierarchy 창에서 만든 오브젝트들을 하나의 물체로 만들어서 다시 언제든지 사용할 수 있게 만든 것을 말한다. 이렇게 프리팹으로 만든 오브젝트들을 코드로 생성해줄 수 있다. 가장 간단한 방법은 Instantiate()을 이용하는 것이다. public GameObject prefab;void Start(){ Instantiate(prefab);} 코드로 생성을 했다면, 반대로 삭제해줄 수도 있다. GameObject prefab;GameObject tank;void Start(){ tank = Instantiate(prefab); Destroy(tank, 3.0f);} Destroy에 들어간 float 변수는 3초..
eulerAngles 회전은 transform.rotation 외에 eulerAngles을 사용하는 방법이 있다. transform.eulerAngles = new Vector3(0.0f, 0.0f, 0.0f); 오일러 앵글은 몇 도로 회전할 것인지 Vector3를 통해 절대 값(absolute value)을 그대로 넣어준다. 여기에서 absolute value라고 했는데 무슨 의미인지 아래 코드를 보자. _yAngle += Time.deltaTime * 100.0f;transform.eulerAngles = new Vector3(0.0f, _yAngle, 0.0f); 오일러 앵글은 transform.eulerAngles = new Vector3(0.0f, Time.deltaTime * 100...
Vector3 만들기 유니티에서 Vector3 함수를 F12로 타고 올라가보면 어떻게 구성되어 있는지 확인할 수 있다. 여기엔 float 변수 x, y, z를 통해 기본적으로 사칙연산이 구현되어 있다. 유니티 엔진에 정의되어 있는 Vector3를 직접 구현하여 어떻게 코드가 돌아가는지 알아보자. 우선 MyVector 구조체를 정의하고, 그 안에 변수 x, y, z와 생성자를 넣는다. struct MyVector{ public float x; public float y; public float z; public MyVector(float x, float y, float z){ this.x = x; this.y = y; this.z = z; }} 여기에서 입력한 좌표를 기반으로..
프로젝트 안의 자원을 매니저라는 하나의 클래스 안에서 관리하고 싶을 때, 소프트웨어 공학에서 배웠던 싱글톤 패턴을 떠올릴 수 있다. https://guhonga.tistory.com/148 Singleton , Strategy , Adapter , Template Method PatternSingleton 패턴 Singleton 은 ‘정확히 하나의 요소만 갖는 집합’ 이라는 뜻으로, 클래스가 하나의 객체만을 생성하도록 제한한다. 이 말은 즉, 생성자를 통해서 여러 번 호출이 되더라도 인스턴스guhonga.tistory.com 이름 그대로, 특정 클래스의 인스턴스가 하나만 있기를 원할 때 사용하는 디자인 패턴이다. 다른 오브젝트의 컴포넌트에서 언제 어디서든 편하게 매니저 클래스를 사용하여 관리할 수 있..