欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

arduino控制unity血条

程序员文章站 2022-03-21 09:01:35
...

惹,今天花了几小时可算是跑通了,记录一下。

我用的是测距传感器VL53L0X,目的是把通过实时监测得到的距离反映在血条上。

arduino代码比较简单:

#include <NewPing.h>
#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
 // pinMode(inPin,INPUT);
 // digitalWrite(inPin,HIGH);
  Wire.begin();

  sensor.init();
  sensor.setTimeout(10000);
  sensor.startContinuous();

}

void loop()
{
  float compressionDist,distance,duration;
  distance=(sensor.readRangeContinuousMillimeters())+10;
  compressionDist=115-distance;

  if(compressionDist>=0&&compressionDist<5)
  {
  Serial.write(0);
  Serial.flush();
  delay(20);
  }

  if(compressionDist>=5&&compressionDist<10)
  {
  Serial.write(0);
  Serial.flush();
  delay(20);
  }

  if(compressionDist>=10&&compressionDist<15)
  {
  Serial.write(1);
  Serial.flush();
  delay(20);
  }

  if(compressionDist>=15&&compressionDist<20)
  {
  Serial.write(2);
  Serial.flush();
  delay(20);
  }
  
  if(compressionDist>=20&&compressionDist<25)
  {
  Serial.write(3);
  Serial.flush();
  delay(20);
  }
  
  if(compressionDist>=25&&compressionDist<30)
  {
  Serial.write(4);
  Serial.flush();
  delay(20);
  }
  
  if(compressionDist>=30&&compressionDist<35)
  {
  Serial.write(6);
  Serial.flush();
  delay(20);
  }
  
  if(compressionDist>=35&&compressionDist<40)
  {
  Serial.write(8);
  Serial.flush();
  delay(20);
  }
  
  if(compressionDist>=40&&compressionDist<45)
  {
  Serial.write(10);
  Serial.flush();
  delay(20);
  }
  }

在unity中设置一下血条:
arduino控制unity血条

基本完工了。

还有一个遗留问题:血条填充并不是百分百的,端头总留有一点背景part。

arduino控制unity血条
这个查阅了一下大佬们发的博客,只要把background里面的image type改成filled就好了。
arduino控制unity血条

算是完成了,就是有点丑。
arduino控制unity血条

相关标签: unity arduino