목록Etc/Unity (23)
ecsimsw
Coroutine - 총알 발사시 muzzle flash를 출력하도록 하다가 불꽃의 지연 시간을 딜레이가 아닌 코루틴으로 처리하는 방법을 공부하게 되었다. Muzzle flash는 구글링으로 이미지 파일을 다운로드 한 후 gameObject - 3D object - Quad를 생성하고 메테리얼로 해당 이미지를 대입하여 만들었다. MuzzleFlash - 총알을 발사할때마다 불꽃 오브젝트가 유효했다가 1초 후에 다시 무효로 되는 코드를 짜면 발사시 불꽃을 구현할 수 있을 것이다. 만약 이런 상황에서 이 코드를 MuzzleFlash.enabled = true -> Thread.sleep(1000) -> MuzzleFlash.enabled = false 으로 처리한다면 sleep 동안 프로그램이 동작하지 못할..
Socket connection - 유니티에서 소켓 통신으로 멀티 플레이를 구현하는 방법을 공부해왔다. -클라이언트에서 받은 입력으로 직접 게임을 동작시키는 것이 아니라 주체와 입력을 byte로 서버에 보내고 서버는 연결된 모든 클라이언트에 데이터를 수신. 그 후 다시 클라이언트는 데이터를 무한히 받기만 하는 다른 스레드를 만들어 데이터를 수신하고, 받은 데이터를 정류하여 어떤 주체가 어떤 입력을 했는지 확인 후 이를 처리하도록 하였다. using Socket - 소켓을 다루기 위해 System.Net.Sockets Namespace를 선언한다. using System.Net.Sockets; - Tcpclient 객체와 받은 데이터를 저장할 string 변수를 private으로 선언한다. "Global"..
Blend Tree - Blend Tree는 여러가지 애니메이션이 혼합되어 각가 다른 비중으로 합쳐져 매끄러운 동작을 수행하도록 하는 작업 방식이다. 예를 들면, 캐릭터가 달리면서 회전할 때, 입력 정도에 따라 꺾는 애니메이션과 달리는 애니메이션을 혼합하여 더 부드럽게 표현할 수 있는 것이다. Transition 방식은 변수나 시간을 기준으로 한 애니메이션에서 다음 애니메이션으로 전이되는 데 사용되고, Blend Tree 방식은 모션이 블렌딩 파라미터에 따른 비중으로 혼합되어 최종 모션으로 결정되어 동작하도록 작업하는 방식이다. Add Motion field - 먼저 컨트롤 창의 빈 공간에 우클릭하여 Create State -> From new blend tree 를 선택하는 것으로 새로운 blend t..
Transition - Mecanim으로 애니메이션을 처리하면서 각 모션 사이의 관계를 처리하는 방식으로 Transition 방식과 Blend Tree 방식 중 Transition 방식을 공부하였다. Transition - Transition 방식은 애니메이션 동작의 전이를 변수나 클립의 시간을 기준으로 하는 방식이다. - state machine를 이용하여 애니메이션간의 전이 관계를 설정한다. 한 노드를 오른쪽 마우스로 클릭 후 Make Transition을 눌러 원하는 다음 state에 두면, 화살표로 애니메이션간 관계가 표시된다. 화살표는 해당 transition을 누르고 delete 버튼을 누르는 것으로 삭제 가능하다. Parameter - Bool, Int, Float, Trigger 타입의 변..
Animation - Mecanim - 유니티에서 애니메이션을 지원하는 두가지 방식 (Legacy Animation / Mecanim Animation) 중 Mecanim 방식으로 애니메이션을 다루는 방법을 공부하였다. Legacy Animation - legacy는 메카님 애니메이션이 도입되기 이전에 사용된, 3D Animation Tool에서 제작한 애니메이션을 다루는 방식이다. 유니티 Docs에서는 새로운 프로젝트의 경우 Mecanim 방식을 사용하도록 권장하고 있으나 빠른 속도로 인해 아직도 많이 사용되고 있다. Mecanim Animation - Mecanim은 legacy보다 이후에 지원되는 애니메이션 제어 시스템이다. 메카님은 휴머노이드형 모델의 뼈대를 기준으로 애니메이션을 동작시켜, 뼈대 ..
Input Input Manager에 설정된 게임 입력 장치의 데이터를 입력받아 이를 접근하기 유리하도록 한 class이다. 이 클래스로 키보드의 버튼 값이나 터치의 유/무 또는 횟수, 조이스틱 조작 등의 데이터를 받아 게임을 조작할 수 있다. Input Manager - 게임 조작 장치의 가상 축과 버튼을 컨트롤 이름으로 맵핑시켜 관리한다. &nsbp; Edit - Project Setting - Input에서 기존의 축과 버튼을 설정하고, 새로운 입력 축을 추가할 수 있다. GetAxis - Input 클레스의 메소드로 InputManager에 맵핑된 가상 축을 읽는다. "Horizontal", "Vertical"은 조이스틱의 각각 수평과 수직에, "Mouse X", "Mouse Y"는 마우스에, "..
Network - 유니티에서 네트워크를 사용하는 방법을 공부하였다. Dedicated server / Host - Unity 네트워크 시스템에서도 멀티 플레이를 위해선 하나의 서버와 여러 클라이언트를 필요로 한다. 이때 서버가 게임 밖에서 클라이언트의 요청을 Read하고 접속된 클라이언트에 이 데이터를 뿌리는 것을 Dedicated Server 방식, 서버 없이 클라이언트 중 하나가 서버의 역할을 대신하는 방식, 그 클라이언트를 host라고 한다. host 방식은 서버를 따로 준비하지 않아도 되어 비용적으로 유리하지만, host가 되는 클라이언트의 PC 환경에 서버가 영향을 받는다는 위험 요소가 있다. 또한, host 방식은 직접 연결과 달리 클라이언트의 직접 요청 수행이 아닌 서버가 요청을 받고 다시 ..
Audio Audio Listener - Audio Listener는 게임 내 source가 사용하는 마이크이다. 씬 내의 오디오 출력 장치의 소리를 입력 받아 사용자에게 출력하는 것이다. 소리의 위치(audio source)는 여러 군데 일 수 있으나 한 씬에서 Audio Listener는 단 하나만 사용 가능하다. Audio Listener는 마이크이고 위치를 갖는 소리를 입력 받기 때문에 그 위치가 중요하다. 게임 캐릭터에 차일드화하여 게임 캐릭터를 더 실감나게 표현할 수 있고, 메인 카메라에 위치시켜 관찰자 입장에서 소리를 표현하는 등, 그 위치에 따라 사용자가 듣는 귀의 위치도 달라지는 것이다. Audio Source - 소리를 재생한다. 즉 씬에서 소리의 근원지, 소리를 내는 위치를 결정하는 ..