private void OnAttack(string msgArgs) { Debug.Log("OnAttack" + msgArgs); string[] split = msgArgs.Split(','); string desc = split[0]; float eulY = float.Parse(split[1]); if (!otherHumans.ContainsKey(desc)) { return; } SyncHuman h = (SyncHuman)otherHumans[desc]; h.SyncAttack(eulY); }
private void OnDie(string msgArgs) { Debug.Log("OnDie" + msgArgs); string[] split = msgArgs.Split(','); string hitDese = split[0]; // 自己死了 if (hitDese == myHuman.desc) { Debug.Log("Game Over"); } // 死了 if (!otherHumans.ContainsKey(hitDese)) { return; } SyncHuman h = (SyncHuman)otherHumans[hitDese]; h.gameObject.SetActive(false); }
// Update is called once per frame new void Update() { base.Update(); if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; Physics.Raycast(ray, out hit); if (hit.collider.tag == "Terrain") { MoveTo(hit.point); //发送协议 string sendStr = "Move|"; sendStr += NetManager.GetDesc() + ","; sendStr += hit.point.x + ","; sendStr += hit.point.y + ","; sendStr += hit.point.z + ","; NetManager.Send(sendStr); //NetManager.sendDone.WaitOne(); } } //攻击 if (Input.GetMouseButtonDown(1)) { if (isAttacking) { return; } if (isMoving) { return; } Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; Physics.Raycast(ray, out hit); if (hit.collider.tag != "Terrain") { return; } transform.LookAt(hit.point); Attack(); //发送协议 string sendStr = "Attack|"; sendStr += NetManager.GetDesc() + ","; sendStr += transform.eulerAngles.y + ","; NetManager.Send(sendStr); //攻击判定 Vector3 lineEnd = transform.position + 0.5f * Vector3.up; Vector3 lineStart = lineEnd + 20 * transform.forward; if (Physics.Linecast(lineStart, lineEnd, out hit)) { GameObject hitObj = hit.collider.gameObject; if (hitObj == gameObject) { return; } SyncHuman h = hitObj.GetComponent <SyncHuman>(); if (h == null) { return; } sendStr = "Hit|"; sendStr += NetManager.GetDesc() + ","; sendStr += h.desc + ","; NetManager.Send(sendStr); } } }