为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕仙森 2023-08-20 15:21:40
所以我目前有这个 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.inosend(Variable1, Variable2, Variable3);Unitytransform.Rotate(Variable1,Variable2,Variable3);我希望这是有道理的。谢谢。
查看完整描述

2 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

在 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);


查看完整回答
反对 回复 2023-08-20
?
jeck猫

TA贡献1909条经验 获得超7个赞

Arduino:打印所有三个变量并在它们之间使用分隔符,例如如下所示:


Serial.print(Variable1);

Serial.print("|"); //separator

Serial.print(Variable2);

Serial.print("|"); //separator

Serial.println(Variable3); //println instead of print on the last one

Unity:使用C#中的split函数将读取的字符串拆分为数组:


string[] values = variable.Split('|');

变量值现在应该是一个包含三个元素的数组,可以将其解析为浮点数。


查看完整回答
反对 回复 2023-08-20
  • 2 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信