반응형 분류 전체보기505 Unity - NavMeshAgent를 사용해서 게임오브젝트를 랜덤으로 움직여보기 1. 돌아다닐 영역 설정 01 Window - Navigation 클릭 02 Object - Navigation Static 클릭 03 Bake탭에 들어가서 Bake누르면 영역 설정 완료 04 움직일 GameObject에 NavMeshAgent 추가 Base Offset, Height등 조절하기 2. 랜덤으로 돌아다니기 01 현재 게임 오브젝트에 부탁된 NavMeshAgent 컴포넌트를 찾아 agent변수에 할당 NavMeshAgent agent; private void Start() { agent = GetComponent(); } 02 동물이 목적지에 도착하거나 경로를 탐색중이지 않을때만 돌아다니게 하기 if (!agent.pathPending && agent.remainingDistance < 0... 2023. 8. 2. Unity - NavMeshAgent NavMeshAgent NavMesh위에서 경로를 계산하고 이동하는데 사용된다. NavMesh는 이동가능한 경로를 나타내며 NavMeshAgent는 이 경로를 이동할 수 있도록 도와준다. 프로퍼티 01 destination NavMeshAgent가 이동하려는 목적지 위치 (SetDestination()를 사용하여 목적지를 설정하거나 GetDestination()을 사용하여 현재 설정된 목적지를 가져올 수 있다.) public Vector3 destination; 02 speed NavMeshAgent의 이동속도를 설정하거나 가져올 수 있다. public float speed; 03 angularSpeed NavMeshAgent의 회전속도를 설정하거나 가져올 수 있다. public float angular.. 2023. 8. 2. Unity - SerializationException: Type 'UnityEngine.MonoBehaviour' in Assembly 'UnityEngine.CoreModule 에러 고치는 법 SerializationException: Type 'UnityEngine.MonoBehaviour' in Assembly 'UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable. 오류를 해결해보자 해결 방법 [System.Serializable] public class Example : MonoBehaviour [System.Serializable] 설정한 클래스에 MonoBehaviour가 존재하는지 체크하면된다. 아래와 같이 수정해주면 오류가 해결된다. [System.Serializable] public class Example 2023. 8. 2. 네트워크 프로그래밍 - PacketSession 패킷작업을 위해서 뭐가 필요할까 기존 세션 코드에 기능을 추가해서 패킷이 들어가므로 수정이 필요하다. 패킷은 네트워크를 통해 전송되는 데이터의 단위이며 TCP와 같은 전송 프로토콜은 데이터를 일정 크기의 블록인 패킷을 분할하여 전송한다. TCP의 경우 패킷이 완전체로 오지 않은 경우가 있으므로 완전체인지 아닌지 구분하는 작업이 필요하다. 패킷 통신을 위한 구조와 처리 과정 01 Packet 클래스 설정 size는 패킷의 크기, packetid는 이를 통해 번호에 따라서 패킷을 구분할 수 있다. class Packet { public int size; public int packetId; } 02 LoginOfPacket LoginOfPacket에는 캐릭터의 정보들을 리스트로 보내준다는 가정하에 이는 크기.. 2023. 7. 31. 네트워크프로그래밍 - SendBuffer 개선하기 RecvBuffer 알아보러 가기 네트워크프로그래밍 - RecvBuffer 개선하기 원래 코드 SocketAsyncEventArgs _recvArgs = new SocketAsyncEventArgs(); public void Start(Socket socket) { _recvArgs.SetBuffer(new byte[1024],0,1024); RegisterRecv(); } setBuffer를 한 다음 어떤 변화도 주지 않았다. 그러므로 _socket.Rece code-piggy.tistory.com public abstract class Session { RecvBuffer _recvBuffer = new RecvBuffer(1024); } RecvBuffer같은 경우 클라이언트 또는 서버가 메시지를 .. 2023. 7. 22. Unity - NPC클릭하면 플레이어 쳐다보게 하는 법 NPC 클릭하면 플레이어 쳐다보게 하는 법 01 변수 설정 public Transform player; private Camera mainCamera; private Quaternion originalRotation; 02 메인카메라와 NPC의 초기 회전값 설정 void Start() { mainCamera = Camera.main; originalRotation = transform.rotation; } 03 마우스 왼쪽 버튼이 클릭 되었을때 Raycast를 통해 오브젝트 판별 void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Ray.. 2023. 7. 21. 이전 1 ··· 46 47 48 49 50 51 52 ··· 85 다음 반응형