コード例 #1
0
ファイル: Main.cs プロジェクト: Severn17/UnityLearn
        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);
        }
コード例 #2
0
ファイル: Main.cs プロジェクト: Severn17/UnityLearn
        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);
        }
コード例 #3
0
    // 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);
            }
        }
    }