From 5308117ac6997eeb45bcb7dbd5f688ab4aa0c0fd Mon Sep 17 00:00:00 2001 From: mx05 Date: Fri, 21 Apr 2023 22:48:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(Scripts):=20=E2=9C=A8=20add=20student's=20?= =?UTF-8?q?move?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interface/Assets/Scripts/MapManager.cs | 23 +++++++--- interface/Assets/Scripts/MessageReceiver.cs | 51 +++++++++++++++++---- interface/Assets/Scripts/Student.cs | 46 +++++++++++++++++++ 3 files changed, 105 insertions(+), 15 deletions(-) create mode 100644 interface/Assets/Scripts/Student.cs diff --git a/interface/Assets/Scripts/MapManager.cs b/interface/Assets/Scripts/MapManager.cs index 7c8d4db6..51c9ac3f 100644 --- a/interface/Assets/Scripts/MapManager.cs +++ b/interface/Assets/Scripts/MapManager.cs @@ -8,6 +8,7 @@ public class MapManager : MonoBehaviour // Start is called before the first frame update private bool mapFinished; private MessageOfMap map; + private MessageOfStudent Student; private int rowCount = 50; private int colCount = 50; @@ -16,6 +17,15 @@ public class MapManager : MonoBehaviour public GameObject land; public GameObject door; public GameObject window; + public GameObject box; + public GameObject book; + public GameObject student_1; + public GameObject student_2; + public GameObject student_3; + public GameObject student_4; + public GameObject Monster_1; + public GameObject Monster_2; + public GameObject Monster_3; void Start() { mapFinished = false; @@ -27,16 +37,16 @@ void Update() if (!mapFinished && MessageReceiver.map != null) { map = MessageReceiver.map; - Debug.Log("valid map"); //Debug.Log("valid map"); mapFinished = true; ShowMap(map); } + } private void ShowMap(MessageOfMap map) { - var position = new Vector3(-24.5f, 12.25f, 12.25f); + var position = new Vector3(-0.5f, 49.5f, 49.5f); var block = new GameObject(); for (int i = 0; i < rowCount; i++) { @@ -49,10 +59,9 @@ private void ShowMap(MessageOfMap map) Instantiate(block, position, new Quaternion(0, 0, 0, 0)); } } - position.x = -24.5f; - position.z=position.y = position.y - 0.5f; + position.x = -0.5f; + position.z=position.y = position.y - 1.0f; } - } private GameObject ShowBlock(PlaceType obj) @@ -66,7 +75,9 @@ private GameObject ShowBlock(PlaceType obj) case PlaceType.Door5: return door; case PlaceType.Door6: return door; case PlaceType.Window: return window; - default:return null; + case PlaceType.Chest:return box; + case PlaceType.Classroom:return book; + default:return land; } } } diff --git a/interface/Assets/Scripts/MessageReceiver.cs b/interface/Assets/Scripts/MessageReceiver.cs index d4caffcc..74bed474 100644 --- a/interface/Assets/Scripts/MessageReceiver.cs +++ b/interface/Assets/Scripts/MessageReceiver.cs @@ -9,7 +9,7 @@ public class MessageReceiver : MonoBehaviour { - private bool isMap; + private static int studentNum = 2; // Start is called before the first frame update async void Start() { @@ -17,18 +17,50 @@ async void Start() var client = new AvailableService.AvailableServiceClient(channel); PlayerMsg msg = new PlayerMsg(); msg.PlayerType = PlayerType.StudentPlayer; - msg.PlayerId = 0; - isMap = true; + msg.PlayerId = 3000; map = null; var response = client.AddPlayer(msg); - while (await response.ResponseStream.MoveNext()) + //while (await response.ResponseStream.MoveNext()) + //{ + // var responseVal = response.ResponseStream.Current; + // if (isMap) + // { + // map = responseVal.ObjMessage[0].MapMessage; + // //Debug.Log(map.ToString()); + // isMap = false; + // for (int i = 0; i < studentNum; i++) + // Instantiate(student_1, new Vector3(0f, 0f, 10.0f), new Quaternion(0, 0, 0, 0)); + // } + // else + // { + // for (int i = 0; i < studentNum; i++) + // { + // Student[i] = responseVal.ObjMessage[i].StudentMessage; + // } + + + // } + //} + if(await response.ResponseStream.MoveNext()) + { + var responseVal = response.ResponseStream.Current; + map = responseVal.ObjMessage[0].MapMessage; + } + if (await response.ResponseStream.MoveNext()) { var responseVal = response.ResponseStream.Current; - if (isMap) + for (int i = 0; i < studentNum; i++) { - map = responseVal.ObjMessage[0].MapMessage; - //Debug.Log(map.ToString()); - isMap = false; + Student[i] = responseVal.ObjMessage[i].StudentMessage; + Instantiate(student_1, new Vector3(0f, 0f, 10.0f), new Quaternion(0, 0, 0, 0)); + } + } + while(await response.ResponseStream.MoveNext()) + { + var responseVal = response.ResponseStream.Current; + for(int i=0;i(); + occupation = MessageReceiver.Student[num].StudentType; + transform.position = lastPosition = new Vector3(MessageReceiver.Student[num].Y / 1000.0f, + 50.0f - MessageReceiver.Student[num].X / 1000.0f, + 50.0f - MessageReceiver.Student[num].X / 1000.0f - 0.5f); + } + + // Update is called once per frame + void Update() + { + var currentPosition = new Vector3(MessageReceiver.Student[num].Y / 1000.0f, + 50.0f - MessageReceiver.Student[num].X / 1000.0f, + 50.0f - MessageReceiver.Student[num].X / 1000.0f - 0.5f); + Vector3 step = currentPosition - lastPosition; + if (step != Vector3.zero) + { + transform.position = currentPosition; + anim.SetBool("isRun", true); + } + else + { + anim.SetBool("isRun", false); + } + lastPosition = currentPosition; + } + private int num; + private StudentType occupation; + private Vector3 lastPosition = new Vector3(0, 0, 10.0f); + private static int studentCount = 0; + private Animator anim; +}