Пример #1
0
    void FixedUpdate()
    {
        msgDelayCount++;


        if (msgDelayCount % 17 == 0)
        {
            msgDelayCount = 0;

            if (body.GameReset() != body.RIGHT)
            {  //这里游戏重置
                InfoSend = "GameOver_";
                client.SendMessage(InfoSend);
                Debug.Log("***********GameOver***********");
                GameReset(); //环境重置
            }
            else
            {
                InfoSend = body.GetXSpeedState().ToString() + "_" +    //X轴的速度奖励
                           body.GetXRotationState().ToString() + "_" + //X轴的角度
                           body.GetZRotationState().ToString() + "_" + //Z轴的角度
                           lf_leg.Thigh_GetAngle().ToString() + "_" +  //左前腿的大腿角度
                           lf_leg.Calf_GetAngle().ToString() + "_" +   //左前腿的小腿角度
                           rf_leg.Thigh_GetAngle().ToString() + "_" +  //左后腿的大腿角度
                           rf_leg.Calf_GetAngle().ToString() + "_" +   //左后腿的小腿角度
                           lb_leg.Thigh_GetAngle().ToString() + "_" +  //右前腿的大腿角度
                           lb_leg.Calf_GetAngle().ToString() + "_" +   //右前腿的小腿角度
                           rb_leg.Thigh_GetAngle().ToString() + "_" +  //右后腿的大腿角度
                           rb_leg.Calf_GetAngle().ToString();          //右后腿的小腿角度

                client.SendMessage(InfoSend);
                Debug.Log(InfoSend);
            }
        }

        while (client.MsgReceived)
        {
            client.MsgReceived = false;

            string[] msg_splited = client.strMsg.Split('_');  //分离行为信息

            if (msg_splited.Length == 8)
            {
                lf_leg.Thigh_RunAngle(float.Parse(msg_splited[0]));
                lf_leg.Calf_RunAngle(float.Parse(msg_splited[1]));
                rf_leg.Thigh_RunAngle(float.Parse(msg_splited[2]));
                rf_leg.Calf_RunAngle(float.Parse(msg_splited[3]));
                lb_leg.Thigh_RunAngle(float.Parse(msg_splited[4]));
                lb_leg.Calf_RunAngle(float.Parse(msg_splited[5]));
                rb_leg.Thigh_RunAngle(float.Parse(msg_splited[6]));
                rb_leg.Calf_RunAngle(float.Parse(msg_splited[7]));
            }
            else
            {
                GameReset();  //训练环境重置
            }
        }
    }