惹,今天花了几小时可算是跑通了,记录一下。
我用的是测距传感器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中设置一下血条:
基本完工了。
还有一个遗留问题:血条填充并不是百分百的,端头总留有一点背景part。
这个查阅了一下大佬们发的博客,只要把background里面的image type改成filled就好了。
算是完成了,就是有点丑。