如何将多个变量从 Arduino 发送到 Unity?

所以我目前有这个 arduino.ino:


Serial.println(Variable1);

在 Unity 中执行此操作:


string variable1 = stream.ReadLine();

float x = float.Parse(variable1);

transform.Rotate (0, -x/1000, 0);

我的问题是;我如何将 3 个变量从 Arduino 发送到 Unity,以便我可以transform.Rotate一次将每个值放入函数中?


例如在伪代码中:


Arduino.ino

send(Variable1, Variable2, Variable3);


Unity

transform.Rotate(Variable1,Variable2,Variable3);

我希望这是有道理的。谢谢。


慕仙森
浏览 141回答 2
2回答

千巷猫影

在 Arduino 端,您使用以下代码:void sendVector(float x, float y, float z) {  Serial.print(x, 4);  Serial.print(" ");  Serial.print(y, 4);  Serial.print(" ");  Serial.println(z, 4);}这里要注意精度。对于浮点数来说Serial.print(x);相当于Serial.print(x, 2);给你两位小数。Serial.print(x, 4);给你四位小数。IE:串行打印(1.23456)=>“1.23”串口.print(1.23456, 2) => "1.23"串口.print(1.23456, 4) => "1.2345"现在,在 Unity 端,您使用 C# 代码,例如:string[] elements = stream.ReadLine().Split(' ');float x = float.Parse(elements[0]);float y = float.Parse(elements[1]);float z = float.Parse(elements[2]);transform.Rotate(x, y, z);

jeck猫

Arduino:打印所有三个变量并在它们之间使用分隔符,例如如下所示:Serial.print(Variable1);Serial.print("|"); //separatorSerial.print(Variable2);Serial.print("|"); //separatorSerial.println(Variable3); //println instead of print on the last oneUnity:使用C#中的split函数将读取的字符串拆分为数组:string[] values = variable.Split('|');变量值现在应该是一个包含三个元素的数组,可以将其解析为浮点数。
打开App,查看更多内容
随时随地看视频慕课网APP