示例#1
0
    void Update()
    {
        // 入室したら処理を始める
        if (PhotonNetwork.InRoom)
        {
            /* ゲーム状態によって処理を変える。
             * この処理は各自ローカルで処理しているが、ネットワークとしては「イベント」で処理をしたい。
             * Photon Event を使って作り直すとよいでしょう。
             */
            switch (m_state)
            {
            case HockeyGameState.Initializing:                 // 初期化前
                if (PhotonNetwork.CurrentRoom.PlayerCount > 1) // 二人揃ったら
                {
                    m_state = HockeyGameState.Player2Serve;    // 二人目のプレイヤーのサーブから始める
                }
                break;

            case HockeyGameState.Player1Serve:
                SpawnPack(1);
                m_state = HockeyGameState.InGame;
                break;

            case HockeyGameState.Player2Serve:
                SpawnPack(2);
                m_state = HockeyGameState.InGame;
                break;

            default:
                break;
            }
        }
    }
示例#2
0
    void Client_StartGaming()
    {
        state = HockeyGameState.gaming;
        GameObject obj = null;

        obj      = Network.Instantiate(prefab_player, respawn_top, Quaternion.identity, 0) as GameObject;
        playerMe = obj.GetComponent <Rigidbody>();
    }
示例#3
0
 /// <summary>
 /// サーブ権を設定する
 /// </summary>
 /// <param name="actorNumber">サーブ権を与えるプレイヤーの ActorNumber</param>
 public void Serve(int actorNumber)
 {
     if (actorNumber == 1)
     {
         m_state = HockeyGameState.Player1Serve;
     }
     else
     {
         m_state = HockeyGameState.Player2Serve;
     }
 }
示例#4
0
    void Update()
    {
        if (state != HockeyGameState.gaming)
        {
            return;
        }


        if (Input.GetMouseButton(0))
        {
            Vector3 point  = cam.ScreenToWorldPoint(Input.mousePosition);
            float   x      = Mathf.Clamp(point.x, -bound_x, bound_x);
            float   z      = Mathf.Clamp(point.z, -bound_z, bound_z);
            Vector3 newPos = new Vector3(x, 0.25f, z);

            playerMe.MovePosition(Vector3.Lerp(playerMe.position, newPos, 0.3f));

            force2Ball = (playerMe.position - lastPos).magnitude * 100f;
        }
        lastPos = playerMe.position;


        if (Network.isServer)
        {
            if (playerMe.position.z > respawn_center.z)
            {
                playerMe.position = new Vector3(playerMe.position.x,
                                                playerMe.position.y,
                                                respawn_center.z - 0.2f);
            }

            if (ball.transform.position.z < -6 || ball.transform.position.z > 6)
            {
                Network.Destroy(ball.GetComponent <NetworkView>().viewID);
                state = HockeyGameState.end;

                bool isHostWin = ball.transform.position.z > 0;
                GameEnd(isHostWin);
                networkView.RPC("GameEnd", RPCMode.Others, !isHostWin);
            }
        }
        else
        {
            if (playerMe.position.z < respawn_center.z)
            {
                playerMe.position = new Vector3(playerMe.position.x,
                                                playerMe.position.y,
                                                respawn_center.z + 0.2f);
            }
        }
    }
示例#5
0
    void StartGaming()
    {
        state = HockeyGameState.gaming;

        GameObject obj = null;

        obj      = Network.Instantiate(prefab_player, respawn_bot, Quaternion.identity, 0) as GameObject;
        playerMe = obj.GetComponent <Rigidbody>();
        obj      = Network.Instantiate(prefab_ball, respawn_center, Quaternion.identity, 0) as GameObject;
        ball     = obj.GetComponent <Rigidbody>();

        networkView.RPC("Client_StartGaming", RPCMode.Others);
        //		if(Network.isServer)
        //			obj.GetComponent<Renderer>().material.color = Color.red;
        //		else
        //			obj.GetComponent<Renderer>().material.color = Color.green;
    }
示例#6
0
 void OnLobby()
 {
     if (GUILayout.Button("建立服务器"))
     {
         NetworkConnectionError error = Network.InitializeServer(10, Port, false);
         if (error == NetworkConnectionError.NoError)
         {
             state = HockeyGameState.idle;
         }
     }
     GUILayout.Label("======================================");
     GUILayout.BeginHorizontal();
     GUILayout.Label("服务器IP地址:");
     IP = GUILayout.TextField(IP);
     GUILayout.EndHorizontal();
     if (GUILayout.Button("连接服务器"))
     {
         NetworkConnectionError error = Network.Connect(IP, Port);
         if (error == NetworkConnectionError.NoError)
         {
             state = HockeyGameState.idle;
         }
     }
 }
示例#7
0
 void GameEnd(bool win)
 {
     Network.Destroy(playerMe.GetComponent <NetworkView>().viewID);
     result = win;
     state  = HockeyGameState.end;
 }