VioletaBabel
유니티 A* 글 현재 위치에서 목적지까지 A* 경로를 만든 후, 목적지에 가까운 그리드부터 하나씩 현 위치까지 선을 긋는다. 그 선 위에 존재하는 그리드들 중 장애물이 있을 경우 검사한 그리드를 출발지에 가까워지게 1칸 움직여 다시 선을 그으며 검사하고, 장애물이 없는 경우에는 그 그리드까지만 직선 운동 후 다시 검사를 시작한다. 이동 시 추가적인 보간은 넣지 않았기에 움직임이 부드럽지 않음. 보간은 알아서 나중에 넣자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848..
Cube를 하나 만들어 플레이어로 둔다.Grid라는 Quad를 만들어 프리팹화 한다.큐브, 장애물 그리드, 길 그리드, 플레이어의 색을 표시할 마테리얼을 둔다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293//Click.csusing System.Collections;using System.Collections.Generic;using UnityEngine; /* * 설명 : 임의로 장애물을 만들고 지우고 경로를 출력하는 임시 클래스 *..
C#엔 우선순위 큐가 안보이더라. AStar를 유니티 상에서 짜려는데 있는게 훨씬 편할 것 같아서 작업 제대로 들어가기 전에 먼저 짜보았다.단, 내가 필요한 건 값이 작은 애부터 나오는 애. 큰 애부터 나오게 하려면 pop 함수에서 앞이 아닌 뒤부터 나오게 하면 된다. 노드를 담은 아이12345678910111213141516171819202122232425262728293031323334353637using System.Collections;using System.Collections.Generic;using UnityEngine; public class GridData : MonoBehaviour{ public int f; public static bool operator g2.f); } public..
UI Canvas가 있는 씬에서 Slider를 하나 추가한다.이름은 Player UI로 하고, Middle-Center로 설정한 후 width는 80, height는 15로 설정한다.자식 중 background의 컬러는 빨강으로 하고, 자식 중 Fill Area-Fill의 색은 녹색으로 둔다.Player UI의 자식으로 Text를 하나 추가하고 이름은 player Name Text로 한다.그 다음 Player UI를 프리팹으로 저장하고 하이에라키에서 지운다. PlayerUI.cs를 만들어 다음과 같이 입력한다.//PlayerUI.csusing UnityEngine;using UnityEngine.UI;using System.Collections;public class PlayerUI : MonoBehav..
Player instance를 생성하자. PlayerManager.cs를 열어12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879//PlayerManager.csusing System.Collections;using UnityEngine;using UnityEngine.EventSystems;public class PlayerManager : Photon.PunBehaviour, IPunObservable{ public GameObject Beams; public float Health = 1..
My Robot Kyle에 PhotonView.cs를 붙여준다.Observe option을 unreliable On Change로 한다. --Observe optionOff : RPC 전용일 때 유용Unreliable : 업데이트가 있는 그대로 전송되나 손실될 수 있음. 위치 등 잘 변하지 않는 데이터에는 최적이나, 무기를 바꾸는 등의 트리거에는 적합하지 않음. 게임 오브젝트의 위치를 동기화하는 경우에는 게임 오브젝트가 이동하지 않아도 항상 업데이트를 전송하니 주의해야 함.Unreliable on Change : 업데이트 때마다 변경된 것을 확인함. 값이 바뀌면 전송하고, 값이 바뀌지 않으면 전송을 중지함.Reliable Delta Compressed : 갱신된 값을 이전과 비교. 변경되지 않은 값은 생..
카메라가 플레이어를 따라가게 하기 위해CameraWork.cs를 만든다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970//CameraWork.csusing System.Collections;using UnityEngine; public class CameraWork : MonoBehaviour { public float distance = 7.0f; public float height = 3.0f; public float heightSmoothLag = 0.3f; public Vector3 centerOffset = ..
새로운 씬 Kyle Test를 만든 후 Photon Unity Networking/Demos/Shared Assets 폴더의 Robot Kyle.fbx를 Hierarchy에 불러오자.그리고 My Robot Kyle로 이름을 바꾼 후 리소스 폴더에 프리팹으로 만들어준다. My Kyle Robot에 Character Controller 컴포넌트를 넣는다. 그리고 해당 컴포넌트의 Center.y 값을 1로 바꿔주자.다음으로 Animator의 Controller 부분에 Kyle Robot을 넣어준 후 Speed 파라미터를 양수 값으로 바꾸자. 그러면 실행 시 애가 뛰어간다. 씬에 큐브를 넣어 포지션을 (0,-0.5,0)으로, 스케일을 (30,1,30)으로 하고 카메라를 적절히 배치하자.그리고 안전빵으로 My R..
GameManager.cs를 다음과 같이 수정한다. 12345678910111213141516171819202122232425262728293031323334//GameManager.csusing System.Collections;using System;using UnityEngine;using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { private void LoadArena() { if (!PhotonNetwork.isMasterClient) // 마스터 클라이언트인지 확인. Debug.LogError("PhotonNetwork : Trying to Load a level but we are not the maste..
Room for 1이라는 새로운 Scene을 만든다.floor라는 이름의 Cube를 만든 후 Position은 (0,0,0)으로 하고 Scale을 (20,1,20)로 한다. 그 다음 큐브를 4개 더 만든다. 각각 벽이 될 아이들.Wall 1 : Position (0,2,-10), Rotation (0,0,0), Scale (20,3,1)Wall 2 : Position (0,2,10), Rotation (0,0,0), Scale (20,3,1)Wall 3 : Position (-10,2,0), Rotation (0,90,0), Scale (20,3,1)Wall 4 : Position (10,2,0), Rotation (0,90,0), Scale (20,3,1) 다음 빈 오브젝트인 Game Manager를 ..