【问题标题】:Unity control object via socket Udp C#Unity控制对象通过socket Udp C#
【发布时间】:2019-09-29 19:46:27
【问题描述】:

我有一个统一的对象,我想使用 Visual Studio 2012 (C#) 通过 udp 控制移动。我已经测试发送和接收聊天并且已经成功了。

我已经测试了移动对象 ongui 的脚本并且它也成功了。现在我想控制对象转换或从我从 udp 接收但对象未移动的命令字符串转换。

这是我的接收代码

private  void ReceiveData()
{

    client = new UdpClient(port);
    while (true)
    {

        try
        {
            // Bytes empfangen.
            IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
            byte[] data = client.Receive(ref anyIP);

            // Bytes mit der UTF8-Kodierung in das Textformat kodieren.
            string text = Encoding.UTF8.GetString(data);

        switch (text)
        {

        case "loc+x" :
        {
            satelit.transform.Translate (speedloc,0,0 * Time.deltaTime);
            break;
        }

        case "loc-x" :
        {
            satelit.transform.Translate (-speedloc,0,0 * Time.deltaTime);
            break;
        }

        }

            // Den abgerufenen Text anzeigen.
            print(">> " + text);

            // latest UDPpacket
            lastReceivedUDPPacket=text;                                                                                                                    

            // ....
            allReceivedUDPPackets=allReceivedUDPPackets+text;

        }
        catch (Exception err)
        {
            print(err.ToString());
        }
    }
}

收到了我发送的字符串,但对象无法移动。

【问题讨论】:

  • “没有工作”不是问题描述。有问题的 switch 语句是否运行?
  • 对不起,我的英语很差

标签: c# unity3d udp


【解决方案1】:

首先,您必须检查“speedloc”的值。如果它为 null 或为零,则您的对象无论如何都不会移动。

另外,我建议你应该改变这一行

satelit.transform.Translate (speedloc,0,0 * Time.deltaTime);

satelit.transform.Translate (new Vector3(speedloc,0,0) * Time.deltaTime);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2012-07-27
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多