ZGC
3 years ago
130 changed files with 13739 additions and 7 deletions
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 23c43abb7ffce3a49851d3bd8d426170 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,182 @@ |
|||||||
|
--------------------------------------------------------- |
||||||
|
---MPU6050&NodeMCU&ESP8266&姿态融合算法整合脚本--- |
||||||
|
---读取MPU6050原始数据(三轴加速度,三轴角速度,环境温度) |
||||||
|
---融合四元数算法,该程序的输出值为六轴数据融合后的四元数 |
||||||
|
---四元数转欧拉角需要在其他外接程序上进行实现 |
||||||
|
--------------------------------------------------------- |
||||||
|
id = 0 -- always 0 |
||||||
|
scl = 6 -- set pin 6 as scl |
||||||
|
sda = 7 -- set pin 7 as sda |
||||||
|
MPU6050SlaveAddress = 0x68 |
||||||
|
AK8963SlaveAddress = 0x0C |
||||||
|
|
||||||
|
AccelScaleFactor = 16384; -- sensitivity scale factor respective to full scale setting provided in datasheet |
||||||
|
GyroScaleFactor = 131; |
||||||
|
|
||||||
|
MPU6050_REGISTER_SMPLRT_DIV = 0x19 |
||||||
|
MPU6050_REGISTER_USER_CTRL = 0x6A |
||||||
|
MPU6050_REGISTER_PWR_MGMT_1 = 0x6B |
||||||
|
MPU6050_REGISTER_PWR_MGMT_2 = 0x6C |
||||||
|
MPU6050_REGISTER_CONFIG = 0x1A |
||||||
|
MPU6050_REGISTER_GYRO_CONFIG = 0x1B |
||||||
|
MPU6050_REGISTER_ACCEL_CONFIG = 0x1C |
||||||
|
AK_8963_CONFIG = 0x18 |
||||||
|
MPU6050_REGISTER_FIFO_EN = 0x23 |
||||||
|
MPU6050_REGISTER_INT_ENABLE = 0x38 |
||||||
|
MPU6050_REGISTER_ACCEL_XOUT_H = 0x3B |
||||||
|
MPU6050_REGISTER_SIGNAL_PATH_RESET = 0x68 |
||||||
|
|
||||||
|
function I2C_Write(deviceAddress, regAddress, data) |
||||||
|
i2c.start(id) -- send start condition |
||||||
|
if (i2c.address(id, deviceAddress, i2c.TRANSMITTER))-- set slave address and transmit direction |
||||||
|
then |
||||||
|
i2c.write(id, regAddress) -- write address to slave |
||||||
|
i2c.write(id, data) -- write data to slave |
||||||
|
i2c.stop(id) -- send stop condition |
||||||
|
else |
||||||
|
print("I2C_Write fails") |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
function I2C_Read(deviceAddress, regAddress, SizeOfDataToRead) |
||||||
|
response = 0; |
||||||
|
i2c.start(id) -- send start condition |
||||||
|
if (i2c.address(id, deviceAddress, i2c.TRANSMITTER))-- set slave address and transmit direction |
||||||
|
then |
||||||
|
i2c.write(id, regAddress) -- write address to slave |
||||||
|
i2c.stop(id) -- send stop condition |
||||||
|
i2c.start(id) -- send start condition |
||||||
|
i2c.address(id, deviceAddress, i2c.RECEIVER)-- set slave address and receive direction |
||||||
|
response = i2c.read(id, SizeOfDataToRead) -- read defined length response from slave |
||||||
|
i2c.stop(id) -- send stop condition |
||||||
|
return response |
||||||
|
else |
||||||
|
print("I2C_Read fails") |
||||||
|
end |
||||||
|
return response |
||||||
|
end |
||||||
|
|
||||||
|
function unsignTosigned16bit(num) -- convert unsigned 16-bit no. to signed 16-bit no. |
||||||
|
if num > 32768 then |
||||||
|
num = num - 65536 |
||||||
|
end |
||||||
|
return num |
||||||
|
end |
||||||
|
|
||||||
|
function MPU6050_Init() --configure MPU6050 |
||||||
|
tmr.delay(150000) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SMPLRT_DIV, 0x07) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_1, 0x01) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_PWR_MGMT_2, 0x00) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_CONFIG, 0x00) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_GYRO_CONFIG, 0x00)-- set +/-250 degree/second full scale |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_CONFIG, 0x00)-- set +/- 2g full scale |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_FIFO_EN, 0x00) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_INT_ENABLE, 0x01) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_SIGNAL_PATH_RESET, 0x00) |
||||||
|
I2C_Write(MPU6050SlaveAddress, MPU6050_REGISTER_USER_CTRL, 0x00) |
||||||
|
end |
||||||
|
|
||||||
|
i2c.setup(id, sda, scl, i2c.SLOW) -- initialize i2c |
||||||
|
MPU6050_Init() |
||||||
|
data = I2C_Read(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H, 14) |
||||||
|
AccelX = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 1), 8), string.byte(data, 2)))) |
||||||
|
AccelY = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 3), 8), string.byte(data, 4)))) |
||||||
|
AccelZ = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 5), 8), string.byte(data, 6)))) |
||||||
|
Temperature = unsignTosigned16bit(bit.bor(bit.lshift(string.byte(data,7), 8), string.byte(data,8))) |
||||||
|
GyroX = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 9), 8), string.byte(data, 10)))) |
||||||
|
GyroY = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 11), 8), string.byte(data, 12)))) |
||||||
|
GyroZ = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 13), 8), string.byte(data, 14)))) |
||||||
|
AccelX = AccelX/AccelScaleFactor -- divide each with their sensitivity scale factor |
||||||
|
AccelY = AccelY/AccelScaleFactor |
||||||
|
AccelZ = AccelZ/AccelScaleFactor |
||||||
|
Temperature = Temperature/340+36.53-- temperature formula |
||||||
|
--角速度的值会产生偏移,需要校准 |
||||||
|
GyroX = GyroX/GyroScaleFactor+3 |
||||||
|
GyroY = GyroY/GyroScaleFactor-0.45 |
||||||
|
GyroZ = GyroZ/GyroScaleFactor+0.24 |
||||||
|
|
||||||
|
--姿态融合算法部分定义 |
||||||
|
Kp = 100.0 |
||||||
|
Ki = 0.002 |
||||||
|
halfT = 0.001 |
||||||
|
q0 = 1 |
||||||
|
q1 = 0 |
||||||
|
q2 = 0 |
||||||
|
q3 = 0 |
||||||
|
exInt = 0 |
||||||
|
eyInt = 0 |
||||||
|
ezInt = 0 |
||||||
|
roll = 0.0 |
||||||
|
pitch = 0.0 |
||||||
|
yaw = 0.0 |
||||||
|
|
||||||
|
|
||||||
|
function updateHardWareDatas() |
||||||
|
data = I2C_Read(MPU6050SlaveAddress, MPU6050_REGISTER_ACCEL_XOUT_H, 14) |
||||||
|
AccelX = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 1), 8), string.byte(data, 2)))) |
||||||
|
AccelY = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 3), 8), string.byte(data, 4)))) |
||||||
|
AccelZ = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 5), 8), string.byte(data, 6)))) |
||||||
|
Temperature = unsignTosigned16bit(bit.bor(bit.lshift(string.byte(data,7), 8), string.byte(data,8))) |
||||||
|
GyroX = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 9), 8), string.byte(data, 10)))) |
||||||
|
GyroY = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 11), 8), string.byte(data, 12)))) |
||||||
|
GyroZ = unsignTosigned16bit((bit.bor(bit.lshift(string.byte(data, 13), 8), string.byte(data, 14)))) |
||||||
|
AccelX = AccelX/AccelScaleFactor -- divide each with their sensitivity scale factor |
||||||
|
AccelY = AccelY/AccelScaleFactor |
||||||
|
AccelZ = AccelZ/AccelScaleFactor |
||||||
|
Temperature = Temperature/340+36.53-- temperature formula |
||||||
|
GyroX = GyroX/GyroScaleFactor+3 |
||||||
|
GyroY = GyroY/GyroScaleFactor-0.45 |
||||||
|
GyroZ = GyroZ/GyroScaleFactor+0.24 |
||||||
|
end |
||||||
|
|
||||||
|
function IMUupdate(gx,gy,gz,ax,ay,az) |
||||||
|
-- body |
||||||
|
-- 测量正常化 |
||||||
|
norm = math.sqrt(ax*ax + ay*ay + az*az) |
||||||
|
ax = ax / norm --单位化 |
||||||
|
ay = ay / norm |
||||||
|
az = az / norm |
||||||
|
-- 估计方向的重力 |
||||||
|
vx = 2*(q1*q3 - q0*q2) |
||||||
|
vy = 2*(q0*q1 + q2*q3) |
||||||
|
vz = q0*q0 - q1*q1 - q2*q2 + q3*q3 |
||||||
|
-- 错误的领域和方向传感器测量参考方向之间的交叉乘积的总和 |
||||||
|
ex = (ay*vz - az*vy) |
||||||
|
ey = (az*vx - ax*vz) |
||||||
|
ez = (ax*vy - ay*vx) |
||||||
|
-- 积分误差比例积分增益 |
||||||
|
exInt = exInt + ex*Ki |
||||||
|
eyInt = eyInt + ey*Ki |
||||||
|
ezInt = ezInt + ez*Ki |
||||||
|
-- 调整后的陀螺仪测量 |
||||||
|
gx = gx + Kp*ex + exInt |
||||||
|
gy = gy + Kp*ey + eyInt |
||||||
|
gz = gz + Kp*ez + ezInt |
||||||
|
-- 整合四元数率和正常化 |
||||||
|
q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT |
||||||
|
q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT |
||||||
|
q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT |
||||||
|
q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT |
||||||
|
-- 正常化四元 |
||||||
|
norm = math.sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3) |
||||||
|
q0 = q0 / norm |
||||||
|
q1 = q1 / norm |
||||||
|
q2 = q2 / norm |
||||||
|
q3 = q3 / norm |
||||||
|
--pitch = math.asin(-2 * q1 * q3 + 2 * q0* q2) * 57.3 -- pitch ,转换为度数 |
||||||
|
--roll = math.atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1) * 57.3 -- rollv |
||||||
|
--yaw = math.atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3 |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
while true do --read and print accelero, gyro and temperature value |
||||||
|
updateHardWareDatas() |
||||||
|
IMUupdate(GyroX,GyroY,GyroZ,AccelX,AccelY,AccelZ) |
||||||
|
print(string.format("{'q0':%.3g,'q1':%.3g,'q2':%.3g,'q3':%.3g}",q0,q1,q2,q3)) |
||||||
|
--输出原始数据 |
||||||
|
--print(string.format("%.3g,%.3g,%.3g",GyroX,GyroY,GyroZ)) |
||||||
|
--print(string.format("{'GyroX':%.3g,'GyroY':%.3g,'GyroZ':%.3g,'Temperature':%.3g,'AccelX':%.3g,'AccelY':%.3g,'AccelZ':%.3g}", |
||||||
|
--GyroX, GyroY, GyroZ, Temperature, AccelX, AccelY, AccelZ)) |
||||||
|
tmr.delay(100000) -- 100ms timer delay |
||||||
|
end |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 28a2a4a7fe17b9a47acc8267666b18fe |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,5 @@ |
|||||||
|
该目录下存放ESP8266烧录用的相关程序 |
||||||
|
|
||||||
|
NodeMCU为lua格式的串口输出程序(仅原始数据和四元数) |
||||||
|
|
||||||
|
MicroPython为py格式的串口输出程序(原始数据、四元数和欧拉角) |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 5e0a4b5e826b6694f8f0b567ef165250 |
||||||
|
TextScriptImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 7cf5aae60260a064884fdf3bdba01c76 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,41 @@ |
|||||||
|
# Changelog |
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file, in reverse chronological order by release. |
||||||
|
|
||||||
|
## [0.3.0](https://github.com/tuupola/micropython-mpu9250/compare/0.2.1...0.3.0) - 2020-03-22 |
||||||
|
### Added |
||||||
|
|
||||||
|
- Support for internal temperature sensor ([#1](https://github.com/tuupola/micropython-mpu9250/issues/1), [#9](https://github.com/tuupola/micropython-mpu9250/pull/9), [#18](https://github.com/tuupola/micropython-mpu9250/pull/18)) |
||||||
|
- Support for gyro calibration ([#5](https://github.com/tuupola/micropython-mpu9250/issues/5), [#10](https://github.com/tuupola/micropython-mpu9250/pull/10)) |
||||||
|
|
||||||
|
### Fixed |
||||||
|
- Support for standalone MPU6500 sensors ([#15](https://github.com/tuupola/micropython-mpu9250/issues/15), [#16](https://github.com/tuupola/micropython-mpu9250/pull/16)) |
||||||
|
|
||||||
|
### Changed |
||||||
|
|
||||||
|
- Move I2C bypass initialisation from MPU6500 to MPU9250 ([#17](https://github.com/tuupola/micropython-mpu9250/issues/17)) |
||||||
|
|
||||||
|
## [0.2.1](https://github.com/tuupola/micropython-mpu9250/compare/0.2.0...0.2.1) - 2019-02-07 |
||||||
|
### Fixed |
||||||
|
- Gyro degrees to radians conversion ([#8](https://github.com/tuupola/micropython-mpu9250/pull/8)). |
||||||
|
|
||||||
|
## [0.2.0](https://github.com/tuupola/micropython-mpu9250/compare/0.1.0...0.2.0)- 2018-04-08 |
||||||
|
### Added |
||||||
|
- Support for magnetometer factory sensitivity adjustement values `ASAX`, `ASAY` and `ASAZ`. |
||||||
|
- Support for setting magnetometer offset and scale calibration values. |
||||||
|
``` |
||||||
|
ak8963 = AK8963( |
||||||
|
i2c, |
||||||
|
offset=(-136.8931640625, -160.482421875, 59.02880859375), |
||||||
|
scale=(1.18437220840483, 0.923895823933424, 0.931707933618979) |
||||||
|
) |
||||||
|
``` |
||||||
|
- Method for retrieving the magnetometer offset and scale calibration values. |
||||||
|
``` |
||||||
|
ak8963 = AK8963(i2c) |
||||||
|
offset, scale = ak8963.calibrate(count=256, delay=200) |
||||||
|
``` |
||||||
|
|
||||||
|
## 0.1.0 - 2018-02-17 |
||||||
|
|
||||||
|
Initial working release. |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: dc3b63a3470513a48aed558db38e8d11 |
||||||
|
TextScriptImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,21 @@ |
|||||||
|
The MIT License (MIT) |
||||||
|
|
||||||
|
Copyright (c) 2018-2020 Mika Tuupola |
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
of this software and associated documentation files (the "Software"), to deal |
||||||
|
in the Software without restriction, including without limitation the rights |
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||||
|
copies of the Software, and to permit persons to whom the Software is |
||||||
|
furnished to do so, subject to the following conditions: |
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all |
||||||
|
copies or substantial portions of the Software. |
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||||
|
SOFTWARE. |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 222d46ef59dd2ce4e86e1a35c9fdf484 |
||||||
|
TextScriptImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,31 @@ |
|||||||
|
.DEFAULT_GOAL := help
|
||||||
|
|
||||||
|
help: |
||||||
|
@echo ""
|
||||||
|
@echo "Available tasks:"
|
||||||
|
@echo " watch Upload changed library files to board automagically"
|
||||||
|
@echo " sync Upload library files to board"
|
||||||
|
@echo " reset Soft reboot the board"
|
||||||
|
@echo " repl Start a repl session"
|
||||||
|
@echo " deps Install dependencies with upip"
|
||||||
|
@echo ""
|
||||||
|
|
||||||
|
watch: |
||||||
|
find . -name "*.py" | entr -c sh -c 'make sync && make reset'
|
||||||
|
|
||||||
|
sync: |
||||||
|
ampy --port /dev/tty.SLAB_USBtoUART put mpu6500.py
|
||||||
|
ampy --port /dev/tty.SLAB_USBtoUART put mpu9250.py
|
||||||
|
ampy --port /dev/tty.SLAB_USBtoUART put ak8963.py
|
||||||
|
|
||||||
|
repl: |
||||||
|
screen /dev/tty.SLAB_USBtoUART 115200
|
||||||
|
|
||||||
|
reset: |
||||||
|
ampy --port /dev/cu.SLAB_USBtoUART reset
|
||||||
|
|
||||||
|
dist: |
||||||
|
python3 setup.py sdist
|
||||||
|
# twine upload dist/filename.tar.gz
|
||||||
|
|
||||||
|
.PHONY: help watch shell repl reset sync dist |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 61ade8775a795d944b524ace6c9d8266 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,61 @@ |
|||||||
|
#define Kp 100.0f // 比例增益支配率收敛到加速度计/磁强计 |
||||||
|
#define Ki 0.002f // 积分增益支配率的陀螺仪偏见的衔接 |
||||||
|
#define halfT 0.001f // 采样周期的一半 |
||||||
|
|
||||||
|
float q0 = 1, q1 = 0, q2 = 0, q3 = 0; // 四元数的元素,代表估计方向 |
||||||
|
float exInt = 0, eyInt = 0, ezInt = 0; // 按比例缩小积分误差 |
||||||
|
|
||||||
|
float Yaw,Pitch,Roll; //偏航角,俯仰角,翻滚角 |
||||||
|
|
||||||
|
void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az) |
||||||
|
{ |
||||||
|
float norm; |
||||||
|
float vx, vy, vz; |
||||||
|
float ex, ey, ez; |
||||||
|
|
||||||
|
// 测量正常化 |
||||||
|
norm = sqrt(ax*ax + ay*ay + az*az); |
||||||
|
ax = ax / norm; //单位化 |
||||||
|
ay = ay / norm; |
||||||
|
az = az / norm; |
||||||
|
|
||||||
|
// 估计方向的重力 |
||||||
|
vx = 2*(q1*q3 - q0*q2); |
||||||
|
vy = 2*(q0*q1 + q2*q3); |
||||||
|
vz = q0*q0 - q1*q1 - q2*q2 + q3*q3; |
||||||
|
|
||||||
|
// 错误的领域和方向传感器测量参考方向之间的交叉乘积的总和 |
||||||
|
ex = (ay*vz - az*vy); |
||||||
|
ey = (az*vx - ax*vz); |
||||||
|
ez = (ax*vy - ay*vx); |
||||||
|
|
||||||
|
// 积分误差比例积分增益 |
||||||
|
exInt = exInt + ex*Ki; |
||||||
|
eyInt = eyInt + ey*Ki; |
||||||
|
ezInt = ezInt + ez*Ki; |
||||||
|
|
||||||
|
// 调整后的陀螺仪测量 |
||||||
|
gx = gx + Kp*ex + exInt; |
||||||
|
gy = gy + Kp*ey + eyInt; |
||||||
|
gz = gz + Kp*ez + ezInt; |
||||||
|
|
||||||
|
// 整合四元数率和正常化 |
||||||
|
q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; |
||||||
|
q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; |
||||||
|
q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; |
||||||
|
q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT; |
||||||
|
|
||||||
|
// 正常化四元 |
||||||
|
norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); |
||||||
|
q0 = q0 / norm; |
||||||
|
q1 = q1 / norm; |
||||||
|
q2 = q2 / norm; |
||||||
|
q3 = q3 / norm; |
||||||
|
|
||||||
|
Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch ,转换为度数 |
||||||
|
Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // rollv |
||||||
|
//Yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3; //此处没有价值,注掉 |
||||||
|
} |
||||||
|
———————————————— |
||||||
|
版权声明:本文为CSDN博主「Fred_1986」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 |
||||||
|
原文链接:https://blog.csdn.net/fred_1986/article/details/108522529 |
@ -0,0 +1,58 @@ |
|||||||
|
#define Kp 100.0f // 比例增益支配率收敛到加速度计/磁强计
|
||||||
|
#define Ki 0.002f // 积分增益支配率的陀螺仪偏见的衔接
|
||||||
|
#define halfT 0.001f // 采样周期的一半
|
||||||
|
|
||||||
|
float q0 = 1, q1 = 0, q2 = 0, q3 = 0; // 四元数的元素,代表估计方向
|
||||||
|
float exInt = 0, eyInt = 0, ezInt = 0; // 按比例缩小积分误差
|
||||||
|
|
||||||
|
float Yaw,Pitch,Roll; //偏航角,俯仰角,翻滚角
|
||||||
|
|
||||||
|
void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az) |
||||||
|
{ |
||||||
|
float norm; |
||||||
|
float vx, vy, vz; |
||||||
|
float ex, ey, ez;
|
||||||
|
|
||||||
|
// 测量正常化
|
||||||
|
norm = sqrt(ax*ax + ay*ay + az*az);
|
||||||
|
ax = ax / norm; //单位化
|
||||||
|
ay = ay / norm; |
||||||
|
az = az / norm;
|
||||||
|
|
||||||
|
// 估计方向的重力
|
||||||
|
vx = 2*(q1*q3 - q0*q2); |
||||||
|
vy = 2*(q0*q1 + q2*q3); |
||||||
|
vz = q0*q0 - q1*q1 - q2*q2 + q3*q3; |
||||||
|
|
||||||
|
// 错误的领域和方向传感器测量参考方向之间的交叉乘积的总和
|
||||||
|
ex = (ay*vz - az*vy); |
||||||
|
ey = (az*vx - ax*vz); |
||||||
|
ez = (ax*vy - ay*vx); |
||||||
|
|
||||||
|
// 积分误差比例积分增益
|
||||||
|
exInt = exInt + ex*Ki; |
||||||
|
eyInt = eyInt + ey*Ki; |
||||||
|
ezInt = ezInt + ez*Ki; |
||||||
|
|
||||||
|
// 调整后的陀螺仪测量
|
||||||
|
gx = gx + Kp*ex + exInt; |
||||||
|
gy = gy + Kp*ey + eyInt; |
||||||
|
gz = gz + Kp*ez + ezInt; |
||||||
|
|
||||||
|
// 整合四元数率和正常化
|
||||||
|
q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; |
||||||
|
q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; |
||||||
|
q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; |
||||||
|
q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;
|
||||||
|
|
||||||
|
// 正常化四元
|
||||||
|
norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); |
||||||
|
q0 = q0 / norm; |
||||||
|
q1 = q1 / norm; |
||||||
|
q2 = q2 / norm; |
||||||
|
q3 = q3 / norm; |
||||||
|
|
||||||
|
Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch ,转换为度数
|
||||||
|
Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // rollv
|
||||||
|
//Yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3; //此处没有价值,注掉
|
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 9d32cc185bcc035468484db493275736 |
||||||
|
PluginImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
iconMap: {} |
||||||
|
executionOrder: {} |
||||||
|
isPreloaded: 0 |
||||||
|
isOverridable: 0 |
||||||
|
platformData: |
||||||
|
- first: |
||||||
|
Any: |
||||||
|
second: |
||||||
|
enabled: 1 |
||||||
|
settings: {} |
||||||
|
- first: |
||||||
|
Editor: Editor |
||||||
|
second: |
||||||
|
enabled: 0 |
||||||
|
settings: |
||||||
|
DefaultValueInitialized: true |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 2f84164ba96a10e46a2f81831df04c90 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,122 @@ |
|||||||
|
# MicroPython MPU-9250 (MPU-6500 + AK8963) I2C driver |
||||||
|
|
||||||
|
MPU-9250 is a System in Package (SiP) which combines two chips: MPU-6500 which contains 3-axis gyroscope and 3-axis accelerometer and an AK8963 which is a 3-axis digital compass. |
||||||
|
|
||||||
|
## Usage |
||||||
|
|
||||||
|
Simple test with never ending loop. |
||||||
|
|
||||||
|
```python |
||||||
|
import utime |
||||||
|
from machine import I2C, Pin |
||||||
|
from mpu9250 import MPU9250 |
||||||
|
|
||||||
|
i2c = I2C(scl=Pin(22), sda=Pin(21)) |
||||||
|
sensor = MPU9250(i2c) |
||||||
|
|
||||||
|
print("MPU9250 id: " + hex(sensor.whoami)) |
||||||
|
|
||||||
|
while True: |
||||||
|
print(sensor.acceleration) |
||||||
|
print(sensor.gyro) |
||||||
|
print(sensor.magnetic) |
||||||
|
print(sensor.temperature) |
||||||
|
|
||||||
|
utime.sleep_ms(1000) |
||||||
|
``` |
||||||
|
|
||||||
|
By default the library returns 3-tuple of X, Y, Z axis values for either acceleration, gyroscope and magnetometer ie compass. Default units are `m/s^2`, `rad/s`, `uT` and `°C`. It is possible to also get acceleration values in `g` and gyro values `deg/s`. See the example below. Note that both the MPU6500 and the AK8963 drivers are available as separate classes. MPU9250 is actually a composite of those two. |
||||||
|
|
||||||
|
```python |
||||||
|
import utime |
||||||
|
from machine import I2C, Pin |
||||||
|
from mpu9250 import MPU9250 |
||||||
|
from mpu6500 import MPU6500, SF_G, SF_DEG_S |
||||||
|
|
||||||
|
i2c = I2C(scl=Pin(22), sda=Pin(21)) |
||||||
|
mpu6500 = MPU6500(i2c, accel_sf=SF_G, gyro_sf=SF_DEG_S) |
||||||
|
sensor = MPU9250(i2c, mpu6500=mpu6500) |
||||||
|
|
||||||
|
print("MPU9250 id: " + hex(sensor.whoami)) |
||||||
|
|
||||||
|
while True: |
||||||
|
print(sensor.acceleration) |
||||||
|
print(sensor.gyro) |
||||||
|
print(sensor.magnetic) |
||||||
|
print(sensor.temperature) |
||||||
|
|
||||||
|
utime.sleep_ms(1000) |
||||||
|
``` |
||||||
|
|
||||||
|
More realistic example usage with timer. If you get `OSError: 26` or `i2c driver install error` after soft reboot do a hard reboot. |
||||||
|
|
||||||
|
```python |
||||||
|
import micropython |
||||||
|
from machine import I2C, Pin, Timer |
||||||
|
from mpu9250 import MPU9250 |
||||||
|
|
||||||
|
micropython.alloc_emergency_exception_buf(100) |
||||||
|
|
||||||
|
i2c = I2C(scl=Pin(22), sda=Pin(21)) |
||||||
|
sensor = MPU9250(i2c) |
||||||
|
|
||||||
|
def read_sensor(timer): |
||||||
|
print(sensor.acceleration) |
||||||
|
print(sensor.gyro) |
||||||
|
print(sensor.magnetic) |
||||||
|
print(sensor.temperature) |
||||||
|
|
||||||
|
print("MPU9250 id: " + hex(sensor.whoami)) |
||||||
|
|
||||||
|
timer_0 = Timer(0) |
||||||
|
timer_0.init(period=1000, mode=Timer.PERIODIC, callback=read_sensor) |
||||||
|
``` |
||||||
|
|
||||||
|
## Magnetometer Calibration |
||||||
|
|
||||||
|
For real life applications you should almost always [calibrate the magnetometer](https://appelsiini.net/2018/calibrate-magnetometer/). The AK8963 driver supports both hard and soft iron correction. Calibration function takes two parameters: `count` is the number of samples to collect and `delay` is the delay in millisecods between the samples. |
||||||
|
|
||||||
|
With the default values of `256` and `200` calibration takes aproximately one minute. While calibration function is running the sensor should be rotated multiple times around each axis. |
||||||
|
|
||||||
|
NOTE! If using MPU9250 you will first need to open the I2C bypass access to AK8963. This is not needed when using a standalone AK8963 sensor. |
||||||
|
|
||||||
|
```python |
||||||
|
from machine import I2C, Pin |
||||||
|
from mpu9250 import MPU9250 |
||||||
|
from ak8963 import AK8963 |
||||||
|
|
||||||
|
i2c = I2C(scl=Pin(22), sda=Pin(21)) |
||||||
|
|
||||||
|
dummy = MPU9250(i2c) # this opens the bybass to access to the AK8963 |
||||||
|
ak8963 = AK8963(i2c) |
||||||
|
offset, scale = ak8963.calibrate(count=256, delay=200) |
||||||
|
|
||||||
|
sensor = MPU9250(i2c, ak8963=ak8963) |
||||||
|
``` |
||||||
|
|
||||||
|
After finishing calibration the `calibrate()` method also returns tuples for both hard iron `offset` and soft iron `scale`. To avoid calibrating after each startup it would make sense to strore these values in NVRAM or config file and pass them to the AK8963 constructor. Below example only illustrates how to use the constructor. |
||||||
|
|
||||||
|
```python |
||||||
|
from machine import I2C, Pin |
||||||
|
from mpu9250 import MPU9250 |
||||||
|
from ak8963 import AK8963 |
||||||
|
|
||||||
|
i2c = I2C(scl=Pin(22), sda=Pin(21)) |
||||||
|
dummy = MPU9250(i2c) # this opens the bybass to access to the AK8963 |
||||||
|
|
||||||
|
ak8963 = AK8963( |
||||||
|
i2c, |
||||||
|
offset=(-136.8931640625, -160.482421875, 59.02880859375), |
||||||
|
scale=(1.18437220840483, 0.923895823933424, 0.931707933618979) |
||||||
|
) |
||||||
|
|
||||||
|
sensor = MPU9250(i2c, ak8963=ak8963) |
||||||
|
``` |
||||||
|
|
||||||
|
## Gyro Calibration |
||||||
|
|
||||||
|
TODO |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
The MIT License (MIT). Please see [License File](LICENSE.txt) for more information. |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 58ac5f7fe29992445bb6e3a83141290e |
||||||
|
TextScriptImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,207 @@ |
|||||||
|
# Copyright (c) 2018-2020 Mika Tuupola |
||||||
|
# |
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
# of this software and associated documentation files (the "Software"), to |
||||||
|
# deal in the Software without restriction, including without limitation the |
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
||||||
|
# sell copied of the Software, and to permit persons to whom the Software is |
||||||
|
# furnished to do so, subject to the following conditions: |
||||||
|
# |
||||||
|
# The above copyright notice and this permission notice shall be included in |
||||||
|
# all copies or substantial portions of the Software. |
||||||
|
# |
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||||
|
# SOFTWARE. |
||||||
|
|
||||||
|
# https://github.com/tuupola/micropython-mpu9250 |
||||||
|
# https://www.akm.com/akm/en/file/datasheet/AK8963C.pdf |
||||||
|
|
||||||
|
""" |
||||||
|
MicroPython I2C driver for AK8963 magnetometer |
||||||
|
""" |
||||||
|
|
||||||
|
__version__ = "0.3.0" |
||||||
|
|
||||||
|
# pylint: disable=import-error |
||||||
|
import ustruct |
||||||
|
import utime |
||||||
|
from machine import I2C, Pin |
||||||
|
from micropython import const |
||||||
|
# pylint: enable=import-error |
||||||
|
|
||||||
|
_WIA = const(0x00) |
||||||
|
_HXL = const(0x03) |
||||||
|
_HXH = const(0x04) |
||||||
|
_HYL = const(0x05) |
||||||
|
_HYH = const(0x06) |
||||||
|
_HZL = const(0x07) |
||||||
|
_HZH = const(0x08) |
||||||
|
_ST2 = const(0x09) |
||||||
|
_CNTL1 = const(0x0a) |
||||||
|
_ASAX = const(0x10) |
||||||
|
_ASAY = const(0x11) |
||||||
|
_ASAZ = const(0x12) |
||||||
|
|
||||||
|
_MODE_POWER_DOWN = 0b00000000 |
||||||
|
MODE_SINGLE_MEASURE = 0b00000001 |
||||||
|
MODE_CONTINOUS_MEASURE_1 = 0b00000010 # 8Hz |
||||||
|
MODE_CONTINOUS_MEASURE_2 = 0b00000110 # 100Hz |
||||||
|
MODE_EXTERNAL_TRIGGER_MEASURE = 0b00000100 |
||||||
|
_MODE_SELF_TEST = 0b00001000 |
||||||
|
_MODE_FUSE_ROM_ACCESS = 0b00001111 |
||||||
|
|
||||||
|
OUTPUT_14_BIT = 0b00000000 |
||||||
|
OUTPUT_16_BIT = 0b00010000 |
||||||
|
|
||||||
|
_SO_14BIT = 0.6 # μT per digit when 14bit mode |
||||||
|
_SO_16BIT = 0.15 # μT per digit when 16bit mode |
||||||
|
|
||||||
|
class AK8963: |
||||||
|
"""Class which provides interface to AK8963 magnetometer.""" |
||||||
|
def __init__( |
||||||
|
self, i2c, address=0x0c, |
||||||
|
mode=MODE_CONTINOUS_MEASURE_1, output=OUTPUT_16_BIT, |
||||||
|
offset=(0, 0, 0), scale=(1, 1, 1) |
||||||
|
): |
||||||
|
self.i2c = i2c |
||||||
|
self.address = address |
||||||
|
self._offset = offset |
||||||
|
self._scale = scale |
||||||
|
|
||||||
|
if 0x48 != self.whoami: |
||||||
|
raise RuntimeError("AK8963 not found in I2C bus.") |
||||||
|
|
||||||
|
# Sensitivity adjustement values |
||||||
|
self._register_char(_CNTL1, _MODE_FUSE_ROM_ACCESS) |
||||||
|
asax = self._register_char(_ASAX) |
||||||
|
asay = self._register_char(_ASAY) |
||||||
|
asaz = self._register_char(_ASAZ) |
||||||
|
self._register_char(_CNTL1, _MODE_POWER_DOWN) |
||||||
|
|
||||||
|
# Should wait atleast 100us before next mode |
||||||
|
self._adjustement = ( |
||||||
|
(0.5 * (asax - 128)) / 128 + 1, |
||||||
|
(0.5 * (asay - 128)) / 128 + 1, |
||||||
|
(0.5 * (asaz - 128)) / 128 + 1 |
||||||
|
) |
||||||
|
|
||||||
|
# Power on |
||||||
|
self._register_char(_CNTL1, (mode | output)) |
||||||
|
|
||||||
|
if output is OUTPUT_16_BIT: |
||||||
|
self._so = _SO_16BIT |
||||||
|
else: |
||||||
|
self._so = _SO_14BIT |
||||||
|
|
||||||
|
@property |
||||||
|
def magnetic(self): |
||||||
|
""" |
||||||
|
X, Y, Z axis micro-Tesla (uT) as floats. |
||||||
|
""" |
||||||
|
xyz = list(self._register_three_shorts(_HXL)) |
||||||
|
self._register_char(_ST2) # Enable updating readings again |
||||||
|
|
||||||
|
# Apply factory axial sensitivy adjustements |
||||||
|
xyz[0] *= self._adjustement[0] |
||||||
|
xyz[1] *= self._adjustement[1] |
||||||
|
xyz[2] *= self._adjustement[2] |
||||||
|
|
||||||
|
# Apply output scale determined in constructor |
||||||
|
so = self._so |
||||||
|
xyz[0] *= so |
||||||
|
xyz[1] *= so |
||||||
|
xyz[2] *= so |
||||||
|
|
||||||
|
# Apply hard iron ie. offset bias from calibration |
||||||
|
xyz[0] -= self._offset[0] |
||||||
|
xyz[1] -= self._offset[1] |
||||||
|
xyz[2] -= self._offset[2] |
||||||
|
|
||||||
|
# Apply soft iron ie. scale bias from calibration |
||||||
|
xyz[0] *= self._scale[0] |
||||||
|
xyz[1] *= self._scale[1] |
||||||
|
xyz[2] *= self._scale[2] |
||||||
|
|
||||||
|
return tuple(xyz) |
||||||
|
|
||||||
|
@property |
||||||
|
def adjustement(self): |
||||||
|
return self._adjustement |
||||||
|
|
||||||
|
@property |
||||||
|
def whoami(self): |
||||||
|
""" Value of the whoami register. """ |
||||||
|
return self._register_char(_WIA) |
||||||
|
|
||||||
|
def calibrate(self, count=256, delay=200): |
||||||
|
self._offset = (0, 0, 0) |
||||||
|
self._scale = (1, 1, 1) |
||||||
|
|
||||||
|
reading = self.magnetic |
||||||
|
minx = maxx = reading[0] |
||||||
|
miny = maxy = reading[1] |
||||||
|
minz = maxz = reading[2] |
||||||
|
|
||||||
|
while count: |
||||||
|
utime.sleep_ms(delay) |
||||||
|
reading = self.magnetic |
||||||
|
minx = min(minx, reading[0]) |
||||||
|
maxx = max(maxx, reading[0]) |
||||||
|
miny = min(miny, reading[1]) |
||||||
|
maxy = max(maxy, reading[1]) |
||||||
|
minz = min(minz, reading[2]) |
||||||
|
maxz = max(maxz, reading[2]) |
||||||
|
count -= 1 |
||||||
|
|
||||||
|
# Hard iron correction |
||||||
|
offset_x = (maxx + minx) / 2 |
||||||
|
offset_y = (maxy + miny) / 2 |
||||||
|
offset_z = (maxz + minz) / 2 |
||||||
|
|
||||||
|
self._offset = (offset_x, offset_y, offset_z) |
||||||
|
|
||||||
|
# Soft iron correction |
||||||
|
avg_delta_x = (maxx - minx) / 2 |
||||||
|
avg_delta_y = (maxy - miny) / 2 |
||||||
|
avg_delta_z = (maxz - minz) / 2 |
||||||
|
|
||||||
|
avg_delta = (avg_delta_x + avg_delta_y + avg_delta_z) / 3 |
||||||
|
|
||||||
|
scale_x = avg_delta / avg_delta_x |
||||||
|
scale_y = avg_delta / avg_delta_y |
||||||
|
scale_z = avg_delta / avg_delta_z |
||||||
|
|
||||||
|
self._scale = (scale_x, scale_y, scale_z) |
||||||
|
|
||||||
|
return self._offset, self._scale |
||||||
|
|
||||||
|
def _register_short(self, register, value=None, buf=bytearray(2)): |
||||||
|
if value is None: |
||||||
|
self.i2c.readfrom_mem_into(self.address, register, buf) |
||||||
|
return ustruct.unpack("<h", buf)[0] |
||||||
|
|
||||||
|
ustruct.pack_into("<h", buf, 0, value) |
||||||
|
return self.i2c.writeto_mem(self.address, register, buf) |
||||||
|
|
||||||
|
def _register_three_shorts(self, register, buf=bytearray(6)): |
||||||
|
self.i2c.readfrom_mem_into(self.address, register, buf) |
||||||
|
return ustruct.unpack("<hhh", buf) |
||||||
|
|
||||||
|
def _register_char(self, register, value=None, buf=bytearray(1)): |
||||||
|
if value is None: |
||||||
|
self.i2c.readfrom_mem_into(self.address, register, buf) |
||||||
|
return buf[0] |
||||||
|
|
||||||
|
ustruct.pack_into("<b", buf, 0, value) |
||||||
|
return self.i2c.writeto_mem(self.address, register, buf) |
||||||
|
|
||||||
|
def __enter__(self): |
||||||
|
return self |
||||||
|
|
||||||
|
def __exit__(self, exception_type, exception_value, traceback): |
||||||
|
pass |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 32aef81dc7a58f0408f81dcd8dcccb83 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,275 @@ |
|||||||
|
//=============================================================================================
|
||||||
|
// MahonyAHRS.c
|
||||||
|
//=============================================================================================
|
||||||
|
//
|
||||||
|
// Madgwick's implementation of Mayhony's AHRS algorithm.
|
||||||
|
// See: http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/
|
||||||
|
//
|
||||||
|
// From the x-io website "Open-source resources available on this website are
|
||||||
|
// provided under the GNU General Public Licence unless an alternative licence
|
||||||
|
// is provided in source."
|
||||||
|
//
|
||||||
|
// Date Author Notes
|
||||||
|
// 29/09/2011 SOH Madgwick Initial release
|
||||||
|
// 02/10/2011 SOH Madgwick Optimised for reduced CPU load
|
||||||
|
//
|
||||||
|
// Algorithm paper:
|
||||||
|
// http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=4608934&url=http%3A%2F%2Fieeexplore.ieee.org%2Fstamp%2Fstamp.jsp%3Ftp%3D%26arnumber%3D4608934
|
||||||
|
//
|
||||||
|
//=============================================================================================
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
// Header files
|
||||||
|
|
||||||
|
#include "MahonyAHRS.h" |
||||||
|
#include <math.h> |
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
// Definitions
|
||||||
|
|
||||||
|
#define DEFAULT_SAMPLE_FREQ 512.0f // sample frequency in Hz
|
||||||
|
#define twoKpDef (2.0f * 0.5f) // 2 * proportional gain
|
||||||
|
#define twoKiDef (2.0f * 0.0f) // 2 * integral gain
|
||||||
|
|
||||||
|
|
||||||
|
//============================================================================================
|
||||||
|
// Functions
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
// AHRS algorithm update
|
||||||
|
|
||||||
|
Mahony::Mahony() |
||||||
|
{ |
||||||
|
twoKp = twoKpDef; // 2 * proportional gain (Kp)
|
||||||
|
twoKi = twoKiDef; // 2 * integral gain (Ki)
|
||||||
|
q0 = 1.0f; |
||||||
|
q1 = 0.0f; |
||||||
|
q2 = 0.0f; |
||||||
|
q3 = 0.0f; |
||||||
|
integralFBx = 0.0f; |
||||||
|
integralFBy = 0.0f; |
||||||
|
integralFBz = 0.0f; |
||||||
|
anglesComputed = 0; |
||||||
|
invSampleFreq = 1.0f / DEFAULT_SAMPLE_FREQ; |
||||||
|
} |
||||||
|
|
||||||
|
void Mahony::update(float gx, float gy, float gz, float ax, float ay, float az, float mx, float my, float mz) |
||||||
|
{ |
||||||
|
float recipNorm; |
||||||
|
float q0q0, q0q1, q0q2, q0q3, q1q1, q1q2, q1q3, q2q2, q2q3, q3q3; |
||||||
|
float hx, hy, bx, bz; |
||||||
|
float halfvx, halfvy, halfvz, halfwx, halfwy, halfwz; |
||||||
|
float halfex, halfey, halfez; |
||||||
|
float qa, qb, qc; |
||||||
|
|
||||||
|
// Use IMU algorithm if magnetometer measurement invalid
|
||||||
|
// (avoids NaN in magnetometer normalisation)
|
||||||
|
if((mx == 0.0f) && (my == 0.0f) && (mz == 0.0f)) { |
||||||
|
updateIMU(gx, gy, gz, ax, ay, az); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
// Convert gyroscope degrees/sec to radians/sec
|
||||||
|
gx *= 0.0174533f; |
||||||
|
gy *= 0.0174533f; |
||||||
|
gz *= 0.0174533f; |
||||||
|
|
||||||
|
// Compute feedback only if accelerometer measurement valid
|
||||||
|
// (avoids NaN in accelerometer normalisation)
|
||||||
|
if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f))) { |
||||||
|
|
||||||
|
// Normalise accelerometer measurement
|
||||||
|
recipNorm = invSqrt(ax * ax + ay * ay + az * az); |
||||||
|
ax *= recipNorm; |
||||||
|
ay *= recipNorm; |
||||||
|
az *= recipNorm; |
||||||
|
|
||||||
|
// Normalise magnetometer measurement
|
||||||
|
recipNorm = invSqrt(mx * mx + my * my + mz * mz); |
||||||
|
mx *= recipNorm; |
||||||
|
my *= recipNorm; |
||||||
|
mz *= recipNorm; |
||||||
|
|
||||||
|
// Auxiliary variables to avoid repeated arithmetic
|
||||||
|
q0q0 = q0 * q0; |
||||||
|
q0q1 = q0 * q1; |
||||||
|
q0q2 = q0 * q2; |
||||||
|
q0q3 = q0 * q3; |
||||||
|
q1q1 = q1 * q1; |
||||||
|
q1q2 = q1 * q2; |
||||||
|
q1q3 = q1 * q3; |
||||||
|
q2q2 = q2 * q2; |
||||||
|
q2q3 = q2 * q3; |
||||||
|
q3q3 = q3 * q3; |
||||||
|
|
||||||
|
// Reference direction of Earth's magnetic field
|
||||||
|
hx = 2.0f * (mx * (0.5f - q2q2 - q3q3) + my * (q1q2 - q0q3) + mz * (q1q3 + q0q2)); |
||||||
|
hy = 2.0f * (mx * (q1q2 + q0q3) + my * (0.5f - q1q1 - q3q3) + mz * (q2q3 - q0q1)); |
||||||
|
bx = sqrtf(hx * hx + hy * hy); |
||||||
|
bz = 2.0f * (mx * (q1q3 - q0q2) + my * (q2q3 + q0q1) + mz * (0.5f - q1q1 - q2q2)); |
||||||
|
|
||||||
|
// Estimated direction of gravity and magnetic field
|
||||||
|
halfvx = q1q3 - q0q2; |
||||||
|
halfvy = q0q1 + q2q3; |
||||||
|
halfvz = q0q0 - 0.5f + q3q3; |
||||||
|
halfwx = bx * (0.5f - q2q2 - q3q3) + bz * (q1q3 - q0q2); |
||||||
|
halfwy = bx * (q1q2 - q0q3) + bz * (q0q1 + q2q3); |
||||||
|
halfwz = bx * (q0q2 + q1q3) + bz * (0.5f - q1q1 - q2q2); |
||||||
|
|
||||||
|
// Error is sum of cross product between estimated direction
|
||||||
|
// and measured direction of field vectors
|
||||||
|
halfex = (ay * halfvz - az * halfvy) + (my * halfwz - mz * halfwy); |
||||||
|
halfey = (az * halfvx - ax * halfvz) + (mz * halfwx - mx * halfwz); |
||||||
|
halfez = (ax * halfvy - ay * halfvx) + (mx * halfwy - my * halfwx); |
||||||
|
|
||||||
|
// Compute and apply integral feedback if enabled
|
||||||
|
if(twoKi > 0.0f) { |
||||||
|
// integral error scaled by Ki
|
||||||
|
integralFBx += twoKi * halfex * invSampleFreq; |
||||||
|
integralFBy += twoKi * halfey * invSampleFreq; |
||||||
|
integralFBz += twoKi * halfez * invSampleFreq; |
||||||
|
gx += integralFBx; // apply integral feedback
|
||||||
|
gy += integralFBy; |
||||||
|
gz += integralFBz; |
||||||
|
} else { |
||||||
|
integralFBx = 0.0f; // prevent integral windup
|
||||||
|
integralFBy = 0.0f; |
||||||
|
integralFBz = 0.0f; |
||||||
|
} |
||||||
|
|
||||||
|
// Apply proportional feedback
|
||||||
|
gx += twoKp * halfex; |
||||||
|
gy += twoKp * halfey; |
||||||
|
gz += twoKp * halfez; |
||||||
|
} |
||||||
|
|
||||||
|
// Integrate rate of change of quaternion
|
||||||
|
gx *= (0.5f * invSampleFreq); // pre-multiply common factors
|
||||||
|
gy *= (0.5f * invSampleFreq); |
||||||
|
gz *= (0.5f * invSampleFreq); |
||||||
|
qa = q0; |
||||||
|
qb = q1; |
||||||
|
qc = q2; |
||||||
|
q0 += (-qb * gx - qc * gy - q3 * gz); |
||||||
|
q1 += (qa * gx + qc * gz - q3 * gy); |
||||||
|
q2 += (qa * gy - qb * gz + q3 * gx); |
||||||
|
q3 += (qa * gz + qb * gy - qc * gx); |
||||||
|
|
||||||
|
// Normalise quaternion
|
||||||
|
recipNorm = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3); |
||||||
|
q0 *= recipNorm; |
||||||
|
q1 *= recipNorm; |
||||||
|
q2 *= recipNorm; |
||||||
|
q3 *= recipNorm; |
||||||
|
anglesComputed = 0; |
||||||
|
} |
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
// IMU algorithm update
|
||||||
|
|
||||||
|
void Mahony::updateIMU(float gx, float gy, float gz, float ax, float ay, float az) |
||||||
|
{ |
||||||
|
float recipNorm; |
||||||
|
float halfvx, halfvy, halfvz; |
||||||
|
float halfex, halfey, halfez; |
||||||
|
float qa, qb, qc; |
||||||
|
|
||||||
|
// Convert gyroscope degrees/sec to radians/sec
|
||||||
|
gx *= 0.0174533f; |
||||||
|
gy *= 0.0174533f; |
||||||
|
gz *= 0.0174533f; |
||||||
|
|
||||||
|
// Compute feedback only if accelerometer measurement valid
|
||||||
|
// (avoids NaN in accelerometer normalisation)
|
||||||
|
if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f))) { |
||||||
|
|
||||||
|
// Normalise accelerometer measurement
|
||||||
|
recipNorm = invSqrt(ax * ax + ay * ay + az * az); |
||||||
|
ax *= recipNorm; |
||||||
|
ay *= recipNorm; |
||||||
|
az *= recipNorm; |
||||||
|
|
||||||
|
// Estimated direction of gravity
|
||||||
|
halfvx = q1 * q3 - q0 * q2; |
||||||
|
halfvy = q0 * q1 + q2 * q3; |
||||||
|
halfvz = q0 * q0 - 0.5f + q3 * q3; |
||||||
|
|
||||||
|
// Error is sum of cross product between estimated
|
||||||
|
// and measured direction of gravity
|
||||||
|
halfex = (ay * halfvz - az * halfvy); |
||||||
|
halfey = (az * halfvx - ax * halfvz); |
||||||
|
halfez = (ax * halfvy - ay * halfvx); |
||||||
|
|
||||||
|
// Compute and apply integral feedback if enabled
|
||||||
|
if(twoKi > 0.0f) { |
||||||
|
// integral error scaled by Ki
|
||||||
|
integralFBx += twoKi * halfex * invSampleFreq; |
||||||
|
integralFBy += twoKi * halfey * invSampleFreq; |
||||||
|
integralFBz += twoKi * halfez * invSampleFreq; |
||||||
|
gx += integralFBx; // apply integral feedback
|
||||||
|
gy += integralFBy; |
||||||
|
gz += integralFBz; |
||||||
|
} else { |
||||||
|
integralFBx = 0.0f; // prevent integral windup
|
||||||
|
integralFBy = 0.0f; |
||||||
|
integralFBz = 0.0f; |
||||||
|
} |
||||||
|
|
||||||
|
// Apply proportional feedback
|
||||||
|
gx += twoKp * halfex; |
||||||
|
gy += twoKp * halfey; |
||||||
|
gz += twoKp * halfez; |
||||||
|
} |
||||||
|
|
||||||
|
// Integrate rate of change of quaternion
|
||||||
|
gx *= (0.5f * invSampleFreq); // pre-multiply common factors
|
||||||
|
gy *= (0.5f * invSampleFreq); |
||||||
|
gz *= (0.5f * invSampleFreq); |
||||||
|
qa = q0; |
||||||
|
qb = q1; |
||||||
|
qc = q2; |
||||||
|
q0 += (-qb * gx - qc * gy - q3 * gz); |
||||||
|
q1 += (qa * gx + qc * gz - q3 * gy); |
||||||
|
q2 += (qa * gy - qb * gz + q3 * gx); |
||||||
|
q3 += (qa * gz + qb * gy - qc * gx); |
||||||
|
|
||||||
|
// Normalise quaternion
|
||||||
|
recipNorm = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3); |
||||||
|
q0 *= recipNorm; |
||||||
|
q1 *= recipNorm; |
||||||
|
q2 *= recipNorm; |
||||||
|
q3 *= recipNorm; |
||||||
|
anglesComputed = 0; |
||||||
|
} |
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
// Fast inverse square-root
|
||||||
|
// See: http://en.wikipedia.org/wiki/Fast_inverse_square_root
|
||||||
|
|
||||||
|
float Mahony::invSqrt(float x) |
||||||
|
{ |
||||||
|
float halfx = 0.5f * x; |
||||||
|
float y = x; |
||||||
|
long i = *(long*)&y; |
||||||
|
i = 0x5f3759df - (i>>1); |
||||||
|
y = *(float*)&i; |
||||||
|
y = y * (1.5f - (halfx * y * y)); |
||||||
|
y = y * (1.5f - (halfx * y * y)); |
||||||
|
return y; |
||||||
|
} |
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void Mahony::computeAngles() |
||||||
|
{ |
||||||
|
roll = atan2f(q0*q1 + q2*q3, 0.5f - q1*q1 - q2*q2); |
||||||
|
pitch = asinf(-2.0f * (q1*q3 - q0*q2)); |
||||||
|
yaw = atan2f(q1*q2 + q0*q3, 0.5f - q2*q2 - q3*q3); |
||||||
|
anglesComputed = 1; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//============================================================================================
|
||||||
|
// END OF CODE
|
||||||
|
//============================================================================================
|
||||||
|
© 2021 GitHub, Inc. |
@ -0,0 +1,24 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 4b10b79676f245846bf68004b1d87fa7 |
||||||
|
PluginImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
iconMap: {} |
||||||
|
executionOrder: {} |
||||||
|
isPreloaded: 0 |
||||||
|
isOverridable: 0 |
||||||
|
platformData: |
||||||
|
- first: |
||||||
|
Any: |
||||||
|
second: |
||||||
|
enabled: 1 |
||||||
|
settings: {} |
||||||
|
- first: |
||||||
|
Editor: Editor |
||||||
|
second: |
||||||
|
enabled: 0 |
||||||
|
settings: |
||||||
|
DefaultValueInitialized: true |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,217 @@ |
|||||||
|
# Copyright (c) 2018-2020 Mika Tuupola |
||||||
|
# |
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
# of this software and associated documentation files (the "Software"), to |
||||||
|
# deal in the Software without restriction, including without limitation the |
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
||||||
|
# sell copied of the Software, and to permit persons to whom the Software is |
||||||
|
# furnished to do so, subject to the following conditions: |
||||||
|
# |
||||||
|
# The above copyright notice and this permission notice shall be included in |
||||||
|
# all copies or substantial portions of the Software. |
||||||
|
# |
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||||
|
# SOFTWARE. |
||||||
|
|
||||||
|
# https://github.com/tuupola/micropython-mpu9250 |
||||||
|
|
||||||
|
""" |
||||||
|
MicroPython I2C driver for MPU6500 6-axis motion tracking device |
||||||
|
""" |
||||||
|
|
||||||
|
__version__ = "0.3.0" |
||||||
|
|
||||||
|
# pylint: disable=import-error |
||||||
|
import ustruct |
||||||
|
import utime |
||||||
|
from machine import I2C, Pin |
||||||
|
from micropython import const |
||||||
|
# pylint: enable=import-error |
||||||
|
|
||||||
|
_GYRO_CONFIG = const(0x1b) |
||||||
|
_ACCEL_CONFIG = const(0x1c) |
||||||
|
_ACCEL_CONFIG2 = const(0x1d) |
||||||
|
_ACCEL_XOUT_H = const(0x3b) |
||||||
|
_ACCEL_XOUT_L = const(0x3c) |
||||||
|
_ACCEL_YOUT_H = const(0x3d) |
||||||
|
_ACCEL_YOUT_L = const(0x3e) |
||||||
|
_ACCEL_ZOUT_H = const(0x3f) |
||||||
|
_ACCEL_ZOUT_L= const(0x40) |
||||||
|
_TEMP_OUT_H = const(0x41) |
||||||
|
_TEMP_OUT_L = const(0x42) |
||||||
|
_GYRO_XOUT_H = const(0x43) |
||||||
|
_GYRO_XOUT_L = const(0x44) |
||||||
|
_GYRO_YOUT_H = const(0x45) |
||||||
|
_GYRO_YOUT_L = const(0x46) |
||||||
|
_GYRO_ZOUT_H = const(0x47) |
||||||
|
_GYRO_ZOUT_L = const(0x48) |
||||||
|
_WHO_AM_I = const(0x75) |
||||||
|
|
||||||
|
#_ACCEL_FS_MASK = const(0b00011000) |
||||||
|
ACCEL_FS_SEL_2G = const(0b00000000) |
||||||
|
ACCEL_FS_SEL_4G = const(0b00001000) |
||||||
|
ACCEL_FS_SEL_8G = const(0b00010000) |
||||||
|
ACCEL_FS_SEL_16G = const(0b00011000) |
||||||
|
|
||||||
|
_ACCEL_SO_2G = 16384 # 1 / 16384 ie. 0.061 mg / digit |
||||||
|
_ACCEL_SO_4G = 8192 # 1 / 8192 ie. 0.122 mg / digit |
||||||
|
_ACCEL_SO_8G = 4096 # 1 / 4096 ie. 0.244 mg / digit |
||||||
|
_ACCEL_SO_16G = 2048 # 1 / 2048 ie. 0.488 mg / digit |
||||||
|
|
||||||
|
#_GYRO_FS_MASK = const(0b00011000) |
||||||
|
GYRO_FS_SEL_250DPS = const(0b00000000) |
||||||
|
GYRO_FS_SEL_500DPS = const(0b00001000) |
||||||
|
GYRO_FS_SEL_1000DPS = const(0b00010000) |
||||||
|
GYRO_FS_SEL_2000DPS = const(0b00011000) |
||||||
|
|
||||||
|
_GYRO_SO_250DPS = 131 |
||||||
|
_GYRO_SO_500DPS = 62.5 |
||||||
|
_GYRO_SO_1000DPS = 32.8 |
||||||
|
_GYRO_SO_2000DPS = 16.4 |
||||||
|
|
||||||
|
_TEMP_SO = 333.87 |
||||||
|
_TEMP_OFFSET = 21 |
||||||
|
|
||||||
|
SF_G = 1 |
||||||
|
SF_M_S2 = 9.80665 # 1 g = 9.80665 m/s2 ie. standard gravity |
||||||
|
SF_DEG_S = 1 |
||||||
|
SF_RAD_S = 0.017453292519943 # 1 deg/s is 0.017453292519943 rad/s |
||||||
|
|
||||||
|
class MPU6500: |
||||||
|
"""Class which provides interface to MPU6500 6-axis motion tracking device.""" |
||||||
|
def __init__( |
||||||
|
self, i2c, address=0x68, |
||||||
|
accel_fs=ACCEL_FS_SEL_2G, gyro_fs=GYRO_FS_SEL_250DPS, |
||||||
|
accel_sf=SF_M_S2, gyro_sf=SF_RAD_S, |
||||||
|
gyro_offset=(0, 0, 0) |
||||||
|
): |
||||||
|
self.i2c = i2c |
||||||
|
self.address = address |
||||||
|
|
||||||
|
# 0x70 = standalone MPU6500, 0x71 = MPU6250 SIP |
||||||
|
if self.whoami not in [0x71, 0x70]: |
||||||
|
raise RuntimeError("MPU6500 not found in I2C bus.") |
||||||
|
|
||||||
|
self._accel_so = self._accel_fs(accel_fs) |
||||||
|
self._gyro_so = self._gyro_fs(gyro_fs) |
||||||
|
self._accel_sf = accel_sf |
||||||
|
self._gyro_sf = gyro_sf |
||||||
|
self._gyro_offset = gyro_offset |
||||||
|
|
||||||
|
@property |
||||||
|
def acceleration(self): |
||||||
|
""" |
||||||
|
Acceleration measured by the sensor. By default will return a |
||||||
|
3-tuple of X, Y, Z axis acceleration values in m/s^2 as floats. Will |
||||||
|
return values in g if constructor was provided `accel_sf=SF_M_S2` |
||||||
|
parameter. |
||||||
|
""" |
||||||
|
so = self._accel_so |
||||||
|
sf = self._accel_sf |
||||||
|
|
||||||
|
xyz = self._register_three_shorts(_ACCEL_XOUT_H) |
||||||
|
return tuple([value / so * sf for value in xyz]) |
||||||
|
|
||||||
|
@property |
||||||
|
def gyro(self): |
||||||
|
""" |
||||||
|
X, Y, Z radians per second as floats. |
||||||
|
""" |
||||||
|
so = self._gyro_so |
||||||
|
sf = self._gyro_sf |
||||||
|
ox, oy, oz = self._gyro_offset |
||||||
|
|
||||||
|
xyz = self._register_three_shorts(_GYRO_XOUT_H) |
||||||
|
xyz = [value / so * sf for value in xyz] |
||||||
|
|
||||||
|
xyz[0] -= ox |
||||||
|
xyz[1] -= oy |
||||||
|
xyz[2] -= oz |
||||||
|
|
||||||
|
return tuple(xyz) |
||||||
|
|
||||||
|
@property |
||||||
|
def temperature(self): |
||||||
|
""" |
||||||
|
Die temperature in celcius as a float. |
||||||
|
""" |
||||||
|
temp = self._register_short(_TEMP_OUT_H) |
||||||
|
return ((temp - _TEMP_OFFSET) / _TEMP_SO) + _TEMP_OFFSET |
||||||
|
|
||||||
|
@property |
||||||
|
def whoami(self): |
||||||
|
""" Value of the whoami register. """ |
||||||
|
return self._register_char(_WHO_AM_I) |
||||||
|
|
||||||
|
def calibrate(self, count=256, delay=0): |
||||||
|
ox, oy, oz = (0.0, 0.0, 0.0) |
||||||
|
self._gyro_offset = (0.0, 0.0, 0.0) |
||||||
|
n = float(count) |
||||||
|
|
||||||
|
while count: |
||||||
|
utime.sleep_ms(delay) |
||||||
|
gx, gy, gz = self.gyro |
||||||
|
ox += gx |
||||||
|
oy += gy |
||||||
|
oz += gz |
||||||
|
count -= 1 |
||||||
|
|
||||||
|
self._gyro_offset = (ox / n, oy / n, oz / n) |
||||||
|
return self._gyro_offset |
||||||
|
|
||||||
|
def _register_short(self, register, value=None, buf=bytearray(2)): |
||||||
|
if value is None: |
||||||
|
self.i2c.readfrom_mem_into(self.address, register, buf) |
||||||
|
return ustruct.unpack(">h", buf)[0] |
||||||
|
|
||||||
|
ustruct.pack_into(">h", buf, 0, value) |
||||||
|
return self.i2c.writeto_mem(self.address, register, buf) |
||||||
|
|
||||||
|
def _register_three_shorts(self, register, buf=bytearray(6)): |
||||||
|
self.i2c.readfrom_mem_into(self.address, register, buf) |
||||||
|
return ustruct.unpack(">hhh", buf) |
||||||
|
|
||||||
|
def _register_char(self, register, value=None, buf=bytearray(1)): |
||||||
|
if value is None: |
||||||
|
self.i2c.readfrom_mem_into(self.address, register, buf) |
||||||
|
return buf[0] |
||||||
|
|
||||||
|
ustruct.pack_into("<b", buf, 0, value) |
||||||
|
return self.i2c.writeto_mem(self.address, register, buf) |
||||||
|
|
||||||
|
def _accel_fs(self, value): |
||||||
|
self._register_char(_ACCEL_CONFIG, value) |
||||||
|
|
||||||
|
# Return the sensitivity divider |
||||||
|
if ACCEL_FS_SEL_2G == value: |
||||||
|
return _ACCEL_SO_2G |
||||||
|
elif ACCEL_FS_SEL_4G == value: |
||||||
|
return _ACCEL_SO_4G |
||||||
|
elif ACCEL_FS_SEL_8G == value: |
||||||
|
return _ACCEL_SO_8G |
||||||
|
elif ACCEL_FS_SEL_16G == value: |
||||||
|
return _ACCEL_SO_16G |
||||||
|
|
||||||
|
def _gyro_fs(self, value): |
||||||
|
self._register_char(_GYRO_CONFIG, value) |
||||||
|
|
||||||
|
# Return the sensitivity divider |
||||||
|
if GYRO_FS_SEL_250DPS == value: |
||||||
|
return _GYRO_SO_250DPS |
||||||
|
elif GYRO_FS_SEL_500DPS == value: |
||||||
|
return _GYRO_SO_500DPS |
||||||
|
elif GYRO_FS_SEL_1000DPS == value: |
||||||
|
return _GYRO_SO_1000DPS |
||||||
|
elif GYRO_FS_SEL_2000DPS == value: |
||||||
|
return _GYRO_SO_2000DPS |
||||||
|
|
||||||
|
def __enter__(self): |
||||||
|
return self |
||||||
|
|
||||||
|
def __exit__(self, exception_type, exception_value, traceback): |
||||||
|
pass |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 44e941f18d1c4234ebd0faaf071f3635 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,100 @@ |
|||||||
|
# Copyright (c) 2018-2020 Mika Tuupola |
||||||
|
# |
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
# of this software and associated documentation files (the "Software"), to |
||||||
|
# deal in the Software without restriction, including without limitation the |
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
||||||
|
# sell copied of the Software, and to permit persons to whom the Software is |
||||||
|
# furnished to do so, subject to the following conditions: |
||||||
|
# |
||||||
|
# The above copyright notice and this permission notice shall be included in |
||||||
|
# all copies or substantial portions of the Software. |
||||||
|
# |
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||||
|
# SOFTWARE. |
||||||
|
|
||||||
|
# https://github.com/tuupola/micropython-mpu9250 |
||||||
|
|
||||||
|
""" |
||||||
|
MicroPython I2C driver for MPU9250 9-axis motion tracking device |
||||||
|
""" |
||||||
|
|
||||||
|
# pylint: disable=import-error |
||||||
|
from micropython import const |
||||||
|
from mpu6500 import MPU6500 |
||||||
|
from ak8963 import AK8963 |
||||||
|
# pylint: enable=import-error |
||||||
|
|
||||||
|
__version__ = "0.3.0" |
||||||
|
|
||||||
|
# Used for enabling and disabling the I2C bypass access |
||||||
|
_INT_PIN_CFG = const(0x37) |
||||||
|
_I2C_BYPASS_MASK = const(0b00000010) |
||||||
|
_I2C_BYPASS_EN = const(0b00000010) |
||||||
|
_I2C_BYPASS_DIS = const(0b00000000) |
||||||
|
|
||||||
|
class MPU9250: |
||||||
|
"""Class which provides interface to MPU9250 9-axis motion tracking device.""" |
||||||
|
def __init__(self, i2c, mpu6500 = None, ak8963 = None): |
||||||
|
if mpu6500 is None: |
||||||
|
self.mpu6500 = MPU6500(i2c) |
||||||
|
else: |
||||||
|
self.mpu6500 = mpu6500 |
||||||
|
|
||||||
|
# Enable I2C bypass to access AK8963 directly. |
||||||
|
char = self.mpu6500._register_char(_INT_PIN_CFG) |
||||||
|
char &= ~_I2C_BYPASS_MASK # clear I2C bits |
||||||
|
char |= _I2C_BYPASS_EN |
||||||
|
self.mpu6500._register_char(_INT_PIN_CFG, char) |
||||||
|
|
||||||
|
if ak8963 is None: |
||||||
|
self.ak8963 = AK8963(i2c) |
||||||
|
else: |
||||||
|
self.ak8963 = ak8963 |
||||||
|
|
||||||
|
@property |
||||||
|
def acceleration(self): |
||||||
|
""" |
||||||
|
Acceleration measured by the sensor. By default will return a |
||||||
|
3-tuple of X, Y, Z axis values in m/s^2 as floats. To get values in g |
||||||
|
pass `accel_fs=SF_G` parameter to the MPU6500 constructor. |
||||||
|
""" |
||||||
|
return self.mpu6500.acceleration |
||||||
|
|
||||||
|
@property |
||||||
|
def gyro(self): |
||||||
|
""" |
||||||
|
Gyro measured by the sensor. By default will return a 3-tuple of |
||||||
|
X, Y, Z axis values in rad/s as floats. To get values in deg/s pass |
||||||
|
`gyro_sf=SF_DEG_S` parameter to the MPU6500 constructor. |
||||||
|
""" |
||||||
|
return self.mpu6500.gyro |
||||||
|
|
||||||
|
@property |
||||||
|
def temperature(self): |
||||||
|
""" |
||||||
|
Die temperature in celcius as a float. |
||||||
|
""" |
||||||
|
return self.mpu6500.temperature |
||||||
|
|
||||||
|
@property |
||||||
|
def magnetic(self): |
||||||
|
""" |
||||||
|
X, Y, Z axis micro-Tesla (uT) as floats. |
||||||
|
""" |
||||||
|
return self.ak8963.magnetic |
||||||
|
|
||||||
|
@property |
||||||
|
def whoami(self): |
||||||
|
return self.mpu6500.whoami |
||||||
|
|
||||||
|
def __enter__(self): |
||||||
|
return self |
||||||
|
|
||||||
|
def __exit__(self, exception_type, exception_value, traceback): |
||||||
|
pass |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 03fd210311253c147878319e86f1193c |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,2 @@ |
|||||||
|
[metadata] |
||||||
|
description-file = README.md |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 978962c3c10a80e478401ba40fcd26bd |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,32 @@ |
|||||||
|
import sys |
||||||
|
sys.path.pop(0) |
||||||
|
from setuptools import setup |
||||||
|
from codecs import open |
||||||
|
from os import path |
||||||
|
|
||||||
|
cwd = path.abspath(path.dirname(__file__)) |
||||||
|
|
||||||
|
# Get the long description from the README file |
||||||
|
with open(path.join(cwd, "README.md"), encoding="utf-8") as f: |
||||||
|
long_description = f.read() |
||||||
|
|
||||||
|
setup( |
||||||
|
name="micropython-mpu9250", |
||||||
|
py_modules=["mpu9250", "mpu6500", "ak8963"], |
||||||
|
version="0.3.0", |
||||||
|
description="MicroPython I2C driver for MPU9250 9-axis motion tracking device", |
||||||
|
long_description=long_description, |
||||||
|
long_description_content_type="text/markdown", |
||||||
|
keywords="accelerometer, gyro, magnetometer, micropython, i2c", |
||||||
|
url="https://github.com/tuupola/micropython-mpu9250", |
||||||
|
author="Mika Tuupola", |
||||||
|
author_email="tuupola@appelsiini.net", |
||||||
|
maintainer="Mika Tuupola", |
||||||
|
maintainer_email="tuupola@appelsiini.net", |
||||||
|
license="MIT", |
||||||
|
classifiers=[ |
||||||
|
"Development Status :: 4 - Beta", |
||||||
|
"Programming Language :: Python :: Implementation :: MicroPython", |
||||||
|
"License :: OSI Approved :: MIT License", |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: bc7cd4bd62febd24082dadd364be4ac0 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 92e1538cf332f1b488beb1dfbc1ff31c |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
Binary file not shown.
@ -0,0 +1,30 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: e475d5c8d487c7d4493577c0ea85424a |
||||||
|
PluginImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
iconMap: {} |
||||||
|
executionOrder: {} |
||||||
|
isPreloaded: 0 |
||||||
|
isOverridable: 0 |
||||||
|
platformData: |
||||||
|
- first: |
||||||
|
Any: |
||||||
|
second: |
||||||
|
enabled: 1 |
||||||
|
settings: {} |
||||||
|
- first: |
||||||
|
Editor: Editor |
||||||
|
second: |
||||||
|
enabled: 0 |
||||||
|
settings: |
||||||
|
DefaultValueInitialized: true |
||||||
|
- first: |
||||||
|
Windows Store Apps: WindowsStoreApps |
||||||
|
second: |
||||||
|
enabled: 0 |
||||||
|
settings: |
||||||
|
CPU: AnyCPU |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: e0c81cac9271bb843af386637b6d6b4e |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,383 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!1001 &100100000 |
||||||
|
Prefab: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
serializedVersion: 2 |
||||||
|
m_Modification: |
||||||
|
m_TransformParent: {fileID: 0} |
||||||
|
m_Modifications: [] |
||||||
|
m_RemovedComponents: [] |
||||||
|
m_SourcePrefab: {fileID: 0} |
||||||
|
m_RootGameObject: {fileID: 1456091746794382} |
||||||
|
m_IsPrefabAsset: 1 |
||||||
|
--- !u!1 &1139793821990616 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224154201844102352} |
||||||
|
- component: {fileID: 222910016590611166} |
||||||
|
- component: {fileID: 114323351348535382} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Text |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1456091746794382 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224368088909558600} |
||||||
|
- component: {fileID: 222462660609205198} |
||||||
|
- component: {fileID: 114442951676989116} |
||||||
|
- component: {fileID: 114626009689362896} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Image (1) |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1475654912373326 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224259740641284928} |
||||||
|
- component: {fileID: 222707800505319690} |
||||||
|
- component: {fileID: 114828079985214486} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: AccelYNegativeBar |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1698285148425396 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224995374732261912} |
||||||
|
- component: {fileID: 222402013992604818} |
||||||
|
- component: {fileID: 114130620587259498} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Line |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1907999241691114 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224120546346935508} |
||||||
|
- component: {fileID: 222048752067549718} |
||||||
|
- component: {fileID: 114375934314842058} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: AccelYPositiveBar |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!114 &114130620587259498 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1698285148425396} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 0} |
||||||
|
m_Type: 0 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 4 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 0 |
||||||
|
--- !u!114 &114323351348535382 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1139793821990616} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_FontData: |
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
m_FontSize: 14 |
||||||
|
m_FontStyle: 0 |
||||||
|
m_BestFit: 0 |
||||||
|
m_MinSize: 10 |
||||||
|
m_MaxSize: 40 |
||||||
|
m_Alignment: 3 |
||||||
|
m_AlignByGeometry: 0 |
||||||
|
m_RichText: 1 |
||||||
|
m_HorizontalOverflow: 0 |
||||||
|
m_VerticalOverflow: 0 |
||||||
|
m_LineSpacing: 1 |
||||||
|
m_Text: "\u7AD6\u76F4" |
||||||
|
--- !u!114 &114375934314842058 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1907999241691114} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 0.7575587, g: 1, b: 0.740566, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 21300000, guid: dff3e7effdd533c46a367b83d25d471b, type: 3} |
||||||
|
m_Type: 3 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 1 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 0 |
||||||
|
--- !u!114 &114442951676989116 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1456091746794382} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 0, g: 0, b: 0, a: 0.53333336} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 0} |
||||||
|
m_Type: 0 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 4 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 0 |
||||||
|
--- !u!114 &114626009689362896 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1456091746794382} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 11500000, guid: 72fa529d1dea2a845b05e00a99658d71, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
BarImgPostive: {fileID: 114375934314842058} |
||||||
|
BarImgNagetive: {fileID: 114828079985214486} |
||||||
|
values: 0 |
||||||
|
--- !u!114 &114828079985214486 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1475654912373326} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 1, g: 0.6084906, b: 0.6084906, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 21300000, guid: dff3e7effdd533c46a367b83d25d471b, type: 3} |
||||||
|
m_Type: 3 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 1 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 1 |
||||||
|
--- !u!222 &222048752067549718 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1907999241691114} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222402013992604818 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1698285148425396} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222462660609205198 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1456091746794382} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222707800505319690 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1475654912373326} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222910016590611166 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1139793821990616} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!224 &224120546346935508 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1907999241691114} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224368088909558600} |
||||||
|
m_RootOrder: 1 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 0.5} |
||||||
|
m_AnchorMax: {x: 0, y: 0.5} |
||||||
|
m_AnchoredPosition: {x: 36, y: 71.25} |
||||||
|
m_SizeDelta: {x: 10, y: 142.5} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224154201844102352 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1139793821990616} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224368088909558600} |
||||||
|
m_RootOrder: 0 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 1} |
||||||
|
m_AnchorMax: {x: 0, y: 1} |
||||||
|
m_AnchoredPosition: {x: 36, y: -15} |
||||||
|
m_SizeDelta: {x: 72, y: 30} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224259740641284928 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1475654912373326} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224368088909558600} |
||||||
|
m_RootOrder: 2 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 0.5} |
||||||
|
m_AnchorMax: {x: 0, y: 0.5} |
||||||
|
m_AnchoredPosition: {x: 36, y: -71.25} |
||||||
|
m_SizeDelta: {x: 10, y: 142.5} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224368088909558600 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1456091746794382} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: |
||||||
|
- {fileID: 224154201844102352} |
||||||
|
- {fileID: 224120546346935508} |
||||||
|
- {fileID: 224259740641284928} |
||||||
|
- {fileID: 224995374732261912} |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 0 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 0.5} |
||||||
|
m_AnchorMax: {x: 0, y: 0.5} |
||||||
|
m_AnchoredPosition: {x: 25, y: -25} |
||||||
|
m_SizeDelta: {x: 50, y: 285} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224995374732261912 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1698285148425396} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224368088909558600} |
||||||
|
m_RootOrder: 3 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5} |
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5} |
||||||
|
m_AnchoredPosition: {x: 11, y: 0} |
||||||
|
m_SizeDelta: {x: 30, y: 1} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 364b73b05bdc99a458ed129f06b58a66 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 100100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,383 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!1001 &100100000 |
||||||
|
Prefab: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
serializedVersion: 2 |
||||||
|
m_Modification: |
||||||
|
m_TransformParent: {fileID: 0} |
||||||
|
m_Modifications: [] |
||||||
|
m_RemovedComponents: [] |
||||||
|
m_SourcePrefab: {fileID: 0} |
||||||
|
m_RootGameObject: {fileID: 1810457917552842} |
||||||
|
m_IsPrefabAsset: 1 |
||||||
|
--- !u!1 &1131191174832364 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224281302679026160} |
||||||
|
- component: {fileID: 222930081758608868} |
||||||
|
- component: {fileID: 114725553398422278} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: AccelXPositiveBar |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1181152457585234 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224332375974617662} |
||||||
|
- component: {fileID: 222436521078970218} |
||||||
|
- component: {fileID: 114590145857257460} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Text |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1571849015857112 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224292744078189534} |
||||||
|
- component: {fileID: 222230930779836456} |
||||||
|
- component: {fileID: 114508849228248392} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Line |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1663622980831548 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224103184171721240} |
||||||
|
- component: {fileID: 222575257487439706} |
||||||
|
- component: {fileID: 114677000956631158} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: AccelXNegativeBar |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!1 &1810457917552842 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 224437245420184406} |
||||||
|
- component: {fileID: 222970116671210502} |
||||||
|
- component: {fileID: 114204262816197546} |
||||||
|
- component: {fileID: 114970952197763046} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Image |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!114 &114204262816197546 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1810457917552842} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 0, g: 0, b: 0, a: 0.53333336} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 0} |
||||||
|
m_Type: 0 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 4 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 0 |
||||||
|
--- !u!114 &114508849228248392 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1571849015857112} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 0} |
||||||
|
m_Type: 0 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 4 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 0 |
||||||
|
--- !u!114 &114590145857257460 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1181152457585234} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_FontData: |
||||||
|
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
m_FontSize: 14 |
||||||
|
m_FontStyle: 0 |
||||||
|
m_BestFit: 0 |
||||||
|
m_MinSize: 10 |
||||||
|
m_MaxSize: 40 |
||||||
|
m_Alignment: 3 |
||||||
|
m_AlignByGeometry: 0 |
||||||
|
m_RichText: 1 |
||||||
|
m_HorizontalOverflow: 0 |
||||||
|
m_VerticalOverflow: 0 |
||||||
|
m_LineSpacing: 1 |
||||||
|
m_Text: "\u6A2A\u5411" |
||||||
|
--- !u!114 &114677000956631158 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1663622980831548} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 1, g: 0.6084906, b: 0.6084906, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 21300000, guid: dff3e7effdd533c46a367b83d25d471b, type: 3} |
||||||
|
m_Type: 3 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 0 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 1 |
||||||
|
--- !u!114 &114725553398422278 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1131191174832364} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_Color: {r: 0.7575587, g: 1, b: 0.740566, a: 1} |
||||||
|
m_RaycastTarget: 1 |
||||||
|
m_OnCullStateChanged: |
||||||
|
m_PersistentCalls: |
||||||
|
m_Calls: [] |
||||||
|
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, |
||||||
|
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null |
||||||
|
m_Sprite: {fileID: 21300000, guid: dff3e7effdd533c46a367b83d25d471b, type: 3} |
||||||
|
m_Type: 3 |
||||||
|
m_PreserveAspect: 0 |
||||||
|
m_FillCenter: 1 |
||||||
|
m_FillMethod: 0 |
||||||
|
m_FillAmount: 1 |
||||||
|
m_FillClockwise: 1 |
||||||
|
m_FillOrigin: 0 |
||||||
|
--- !u!114 &114970952197763046 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1810457917552842} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 11500000, guid: 72fa529d1dea2a845b05e00a99658d71, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
BarImgPostive: {fileID: 114725553398422278} |
||||||
|
BarImgNagetive: {fileID: 114677000956631158} |
||||||
|
values: 0 |
||||||
|
--- !u!222 &222230930779836456 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1571849015857112} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222436521078970218 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1181152457585234} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222575257487439706 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1663622980831548} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222930081758608868 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1131191174832364} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!222 &222970116671210502 |
||||||
|
CanvasRenderer: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1810457917552842} |
||||||
|
m_CullTransparentMesh: 0 |
||||||
|
--- !u!224 &224103184171721240 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1663622980831548} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224437245420184406} |
||||||
|
m_RootOrder: 2 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 0.5} |
||||||
|
m_AnchorMax: {x: 0, y: 0.5} |
||||||
|
m_AnchoredPosition: {x: 90, y: -5} |
||||||
|
m_SizeDelta: {x: 180, y: 10} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224281302679026160 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1131191174832364} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224437245420184406} |
||||||
|
m_RootOrder: 1 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 1, y: 0.5} |
||||||
|
m_AnchorMax: {x: 1, y: 0.5} |
||||||
|
m_AnchoredPosition: {x: -90, y: -5} |
||||||
|
m_SizeDelta: {x: 180, y: 10} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224292744078189534 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1571849015857112} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224437245420184406} |
||||||
|
m_RootOrder: 3 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5} |
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5} |
||||||
|
m_AnchoredPosition: {x: 0, y: 0} |
||||||
|
m_SizeDelta: {x: 1, y: 30} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224332375974617662 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1181152457585234} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 224437245420184406} |
||||||
|
m_RootOrder: 0 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 1} |
||||||
|
m_AnchorMax: {x: 0, y: 1} |
||||||
|
m_AnchoredPosition: {x: 36, y: -15} |
||||||
|
m_SizeDelta: {x: 72, y: 30} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
||||||
|
--- !u!224 &224437245420184406 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 1 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 100100000} |
||||||
|
m_GameObject: {fileID: 1810457917552842} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: |
||||||
|
- {fileID: 224332375974617662} |
||||||
|
- {fileID: 224281302679026160} |
||||||
|
- {fileID: 224103184171721240} |
||||||
|
- {fileID: 224292744078189534} |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 0 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 1} |
||||||
|
m_AnchorMax: {x: 0, y: 1} |
||||||
|
m_AnchoredPosition: {x: 180, y: -25} |
||||||
|
m_SizeDelta: {x: 360, y: 50} |
||||||
|
m_Pivot: {x: 0.5, y: 0.5} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 57d6fecbc8dac514d9d092ad19230c94 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 100100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 20d7688177ab3034aa2bb79e98227a84 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 100100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 4f704ae4b4f98ae41a0bce26658850c1 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,908 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!29 &1 |
||||||
|
OcclusionCullingSettings: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 2 |
||||||
|
m_OcclusionBakeSettings: |
||||||
|
smallestOccluder: 5 |
||||||
|
smallestHole: 0.25 |
||||||
|
backfaceThreshold: 100 |
||||||
|
m_SceneGUID: 00000000000000000000000000000000 |
||||||
|
m_OcclusionCullingData: {fileID: 0} |
||||||
|
--- !u!104 &2 |
||||||
|
RenderSettings: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 9 |
||||||
|
m_Fog: 0 |
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} |
||||||
|
m_FogMode: 3 |
||||||
|
m_FogDensity: 0.01 |
||||||
|
m_LinearFogStart: 0 |
||||||
|
m_LinearFogEnd: 300 |
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} |
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} |
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} |
||||||
|
m_AmbientIntensity: 1 |
||||||
|
m_AmbientMode: 0 |
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} |
||||||
|
m_SkyboxMaterial: {fileID: 0} |
||||||
|
m_HaloStrength: 0.5 |
||||||
|
m_FlareStrength: 1 |
||||||
|
m_FlareFadeSpeed: 3 |
||||||
|
m_HaloTexture: {fileID: 0} |
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
m_DefaultReflectionMode: 0 |
||||||
|
m_DefaultReflectionResolution: 128 |
||||||
|
m_ReflectionBounces: 1 |
||||||
|
m_ReflectionIntensity: 1 |
||||||
|
m_CustomReflection: {fileID: 0} |
||||||
|
m_Sun: {fileID: 0} |
||||||
|
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} |
||||||
|
m_UseRadianceAmbientProbe: 0 |
||||||
|
--- !u!157 &3 |
||||||
|
LightmapSettings: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 11 |
||||||
|
m_GIWorkflowMode: 0 |
||||||
|
m_GISettings: |
||||||
|
serializedVersion: 2 |
||||||
|
m_BounceScale: 1 |
||||||
|
m_IndirectOutputScale: 1 |
||||||
|
m_AlbedoBoost: 1 |
||||||
|
m_TemporalCoherenceThreshold: 1 |
||||||
|
m_EnvironmentLightingMode: 0 |
||||||
|
m_EnableBakedLightmaps: 1 |
||||||
|
m_EnableRealtimeLightmaps: 1 |
||||||
|
m_LightmapEditorSettings: |
||||||
|
serializedVersion: 10 |
||||||
|
m_Resolution: 2 |
||||||
|
m_BakeResolution: 40 |
||||||
|
m_AtlasSize: 1024 |
||||||
|
m_AO: 0 |
||||||
|
m_AOMaxDistance: 1 |
||||||
|
m_CompAOExponent: 1 |
||||||
|
m_CompAOExponentDirect: 0 |
||||||
|
m_Padding: 2 |
||||||
|
m_LightmapParameters: {fileID: 0} |
||||||
|
m_LightmapsBakeMode: 1 |
||||||
|
m_TextureCompression: 1 |
||||||
|
m_FinalGather: 0 |
||||||
|
m_FinalGatherFiltering: 1 |
||||||
|
m_FinalGatherRayCount: 256 |
||||||
|
m_ReflectionCompression: 2 |
||||||
|
m_MixedBakeMode: 2 |
||||||
|
m_BakeBackend: 1 |
||||||
|
m_PVRSampling: 1 |
||||||
|
m_PVRDirectSampleCount: 32 |
||||||
|
m_PVRSampleCount: 500 |
||||||
|
m_PVRBounces: 2 |
||||||
|
m_PVRFilterTypeDirect: 0 |
||||||
|
m_PVRFilterTypeIndirect: 0 |
||||||
|
m_PVRFilterTypeAO: 0 |
||||||
|
m_PVRFilteringMode: 1 |
||||||
|
m_PVRCulling: 1 |
||||||
|
m_PVRFilteringGaussRadiusDirect: 1 |
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5 |
||||||
|
m_PVRFilteringGaussRadiusAO: 2 |
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5 |
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2 |
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1 |
||||||
|
m_ShowResolutionOverlay: 1 |
||||||
|
m_LightingDataAsset: {fileID: 0} |
||||||
|
m_UseShadowmask: 1 |
||||||
|
--- !u!196 &4 |
||||||
|
NavMeshSettings: |
||||||
|
serializedVersion: 2 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_BuildSettings: |
||||||
|
serializedVersion: 2 |
||||||
|
agentTypeID: 0 |
||||||
|
agentRadius: 0.5 |
||||||
|
agentHeight: 2 |
||||||
|
agentSlope: 45 |
||||||
|
agentClimb: 0.4 |
||||||
|
ledgeDropHeight: 0 |
||||||
|
maxJumpAcrossDistance: 0 |
||||||
|
minRegionArea: 2 |
||||||
|
manualCellSize: 0 |
||||||
|
cellSize: 0.16666667 |
||||||
|
manualTileSize: 0 |
||||||
|
tileSize: 256 |
||||||
|
accuratePlacement: 0 |
||||||
|
debug: |
||||||
|
m_Flags: 0 |
||||||
|
m_NavMeshData: {fileID: 0} |
||||||
|
--- !u!1 &109144102 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 109144105} |
||||||
|
- component: {fileID: 109144104} |
||||||
|
- component: {fileID: 109144103} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Main Camera |
||||||
|
m_TagString: MainCamera |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!81 &109144103 |
||||||
|
AudioListener: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 109144102} |
||||||
|
m_Enabled: 1 |
||||||
|
--- !u!20 &109144104 |
||||||
|
Camera: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 109144102} |
||||||
|
m_Enabled: 1 |
||||||
|
serializedVersion: 2 |
||||||
|
m_ClearFlags: 2 |
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} |
||||||
|
m_projectionMatrixMode: 1 |
||||||
|
m_SensorSize: {x: 36, y: 24} |
||||||
|
m_LensShift: {x: 0, y: 0} |
||||||
|
m_FocalLength: 50 |
||||||
|
m_NormalizedViewPortRect: |
||||||
|
serializedVersion: 2 |
||||||
|
x: 0 |
||||||
|
y: 0 |
||||||
|
width: 1 |
||||||
|
height: 1 |
||||||
|
near clip plane: 0.3 |
||||||
|
far clip plane: 10 |
||||||
|
field of view: 60 |
||||||
|
orthographic: 1 |
||||||
|
orthographic size: 5 |
||||||
|
m_Depth: -1 |
||||||
|
m_CullingMask: |
||||||
|
serializedVersion: 2 |
||||||
|
m_Bits: 4294967295 |
||||||
|
m_RenderingPath: -1 |
||||||
|
m_TargetTexture: {fileID: 0} |
||||||
|
m_TargetDisplay: 0 |
||||||
|
m_TargetEye: 3 |
||||||
|
m_HDR: 1 |
||||||
|
m_AllowMSAA: 1 |
||||||
|
m_AllowDynamicResolution: 0 |
||||||
|
m_ForceIntoRT: 0 |
||||||
|
m_OcclusionCulling: 1 |
||||||
|
m_StereoConvergence: 10 |
||||||
|
m_StereoSeparation: 0.022 |
||||||
|
--- !u!4 &109144105 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 109144102} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: -1.09, y: 5.07, z: -7.98} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 0 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!1 &462210905 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 462210908} |
||||||
|
- component: {fileID: 462210907} |
||||||
|
- component: {fileID: 462210906} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: EventSystem |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!114 &462210906 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 462210905} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_HorizontalAxis: Horizontal |
||||||
|
m_VerticalAxis: Vertical |
||||||
|
m_SubmitButton: Submit |
||||||
|
m_CancelButton: Cancel |
||||||
|
m_InputActionsPerSecond: 10 |
||||||
|
m_RepeatDelay: 0.5 |
||||||
|
m_ForceModuleActive: 0 |
||||||
|
--- !u!114 &462210907 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 462210905} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_FirstSelected: {fileID: 0} |
||||||
|
m_sendNavigationEvents: 1 |
||||||
|
m_DragThreshold: 10 |
||||||
|
--- !u!4 &462210908 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 462210905} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 6 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!1 &919013184 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 919013188} |
||||||
|
- component: {fileID: 919013187} |
||||||
|
- component: {fileID: 919013186} |
||||||
|
- component: {fileID: 919013185} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Cube |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!65 &919013185 |
||||||
|
BoxCollider: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 919013184} |
||||||
|
m_Material: {fileID: 0} |
||||||
|
m_IsTrigger: 0 |
||||||
|
m_Enabled: 1 |
||||||
|
serializedVersion: 2 |
||||||
|
m_Size: {x: 1, y: 1, z: 1} |
||||||
|
m_Center: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!23 &919013186 |
||||||
|
MeshRenderer: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 919013184} |
||||||
|
m_Enabled: 1 |
||||||
|
m_CastShadows: 1 |
||||||
|
m_ReceiveShadows: 1 |
||||||
|
m_DynamicOccludee: 1 |
||||||
|
m_MotionVectors: 1 |
||||||
|
m_LightProbeUsage: 1 |
||||||
|
m_ReflectionProbeUsage: 1 |
||||||
|
m_RenderingLayerMask: 4294967295 |
||||||
|
m_Materials: |
||||||
|
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_StaticBatchInfo: |
||||||
|
firstSubMesh: 0 |
||||||
|
subMeshCount: 0 |
||||||
|
m_StaticBatchRoot: {fileID: 0} |
||||||
|
m_ProbeAnchor: {fileID: 0} |
||||||
|
m_LightProbeVolumeOverride: {fileID: 0} |
||||||
|
m_ScaleInLightmap: 1 |
||||||
|
m_PreserveUVs: 0 |
||||||
|
m_IgnoreNormalsForChartDetection: 0 |
||||||
|
m_ImportantGI: 0 |
||||||
|
m_StitchLightmapSeams: 0 |
||||||
|
m_SelectedEditorRenderState: 3 |
||||||
|
m_MinimumChartSize: 4 |
||||||
|
m_AutoUVMaxDistance: 0.5 |
||||||
|
m_AutoUVMaxAngle: 89 |
||||||
|
m_LightmapParameters: {fileID: 0} |
||||||
|
m_SortingLayerID: 0 |
||||||
|
m_SortingLayer: 0 |
||||||
|
m_SortingOrder: 0 |
||||||
|
--- !u!33 &919013187 |
||||||
|
MeshFilter: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 919013184} |
||||||
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
--- !u!4 &919013188 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 919013184} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: -3.18, y: 3.96, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 4 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!1 &1004079317 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 1004079319} |
||||||
|
- component: {fileID: 1004079318} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: New Sprite |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!212 &1004079318 |
||||||
|
SpriteRenderer: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1004079317} |
||||||
|
m_Enabled: 1 |
||||||
|
m_CastShadows: 0 |
||||||
|
m_ReceiveShadows: 0 |
||||||
|
m_DynamicOccludee: 1 |
||||||
|
m_MotionVectors: 1 |
||||||
|
m_LightProbeUsage: 1 |
||||||
|
m_ReflectionProbeUsage: 1 |
||||||
|
m_RenderingLayerMask: 4294967295 |
||||||
|
m_Materials: |
||||||
|
- {fileID: 2100000, guid: 264a8026f6825c042944cf8bdf356431, type: 2} |
||||||
|
m_StaticBatchInfo: |
||||||
|
firstSubMesh: 0 |
||||||
|
subMeshCount: 0 |
||||||
|
m_StaticBatchRoot: {fileID: 0} |
||||||
|
m_ProbeAnchor: {fileID: 0} |
||||||
|
m_LightProbeVolumeOverride: {fileID: 0} |
||||||
|
m_ScaleInLightmap: 1 |
||||||
|
m_PreserveUVs: 0 |
||||||
|
m_IgnoreNormalsForChartDetection: 0 |
||||||
|
m_ImportantGI: 0 |
||||||
|
m_StitchLightmapSeams: 0 |
||||||
|
m_SelectedEditorRenderState: 0 |
||||||
|
m_MinimumChartSize: 4 |
||||||
|
m_AutoUVMaxDistance: 0.5 |
||||||
|
m_AutoUVMaxAngle: 89 |
||||||
|
m_LightmapParameters: {fileID: 0} |
||||||
|
m_SortingLayerID: 0 |
||||||
|
m_SortingLayer: 0 |
||||||
|
m_SortingOrder: 0 |
||||||
|
m_Sprite: {fileID: 21300000, guid: dff3e7effdd533c46a367b83d25d471b, type: 3} |
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
m_FlipX: 0 |
||||||
|
m_FlipY: 0 |
||||||
|
m_DrawMode: 0 |
||||||
|
m_Size: {x: 0.16, y: 0.16} |
||||||
|
m_AdaptiveModeThreshold: 0.5 |
||||||
|
m_SpriteTileMode: 0 |
||||||
|
m_WasSpriteAssigned: 1 |
||||||
|
m_MaskInteraction: 0 |
||||||
|
m_SpriteSortPoint: 0 |
||||||
|
--- !u!4 &1004079319 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1004079317} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 3.3, z: 0} |
||||||
|
m_LocalScale: {x: 22, y: 22, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 7 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!1 &1109229777 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 1109229779} |
||||||
|
- component: {fileID: 1109229778} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Script |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!114 &1109229778 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1109229777} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 11500000, guid: 124ab28672a6a104cab21f951dbdcc9c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
jsonData: |
||||||
|
MpuBoardTrans: {fileID: 1409469105} |
||||||
|
value1: {fileID: 1405471468} |
||||||
|
value2: {fileID: 1389643388} |
||||||
|
--- !u!4 &1109229779 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1109229777} |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 2 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!1 &1350859374 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 1350859376} |
||||||
|
- component: {fileID: 1350859375} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Directional Light |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 0 |
||||||
|
--- !u!108 &1350859375 |
||||||
|
Light: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1350859374} |
||||||
|
m_Enabled: 1 |
||||||
|
serializedVersion: 8 |
||||||
|
m_Type: 1 |
||||||
|
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} |
||||||
|
m_Intensity: 1 |
||||||
|
m_Range: 10 |
||||||
|
m_SpotAngle: 30 |
||||||
|
m_CookieSize: 10 |
||||||
|
m_Shadows: |
||||||
|
m_Type: 2 |
||||||
|
m_Resolution: -1 |
||||||
|
m_CustomResolution: -1 |
||||||
|
m_Strength: 1 |
||||||
|
m_Bias: 0.05 |
||||||
|
m_NormalBias: 0.4 |
||||||
|
m_NearPlane: 0.2 |
||||||
|
m_Cookie: {fileID: 0} |
||||||
|
m_DrawHalo: 0 |
||||||
|
m_Flare: {fileID: 0} |
||||||
|
m_RenderMode: 0 |
||||||
|
m_CullingMask: |
||||||
|
serializedVersion: 2 |
||||||
|
m_Bits: 4294967295 |
||||||
|
m_Lightmapping: 4 |
||||||
|
m_LightShadowCasterMode: 0 |
||||||
|
m_AreaSize: {x: 1, y: 1} |
||||||
|
m_BounceIntensity: 1 |
||||||
|
m_ColorTemperature: 6570 |
||||||
|
m_UseColorTemperature: 0 |
||||||
|
m_ShadowRadius: 0 |
||||||
|
m_ShadowAngle: 0 |
||||||
|
--- !u!4 &1350859376 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1350859374} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 3 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!1001 &1389643386 |
||||||
|
Prefab: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 2 |
||||||
|
m_Modification: |
||||||
|
m_TransformParent: {fileID: 1599924583} |
||||||
|
m_Modifications: |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalPosition.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalPosition.y |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalPosition.z |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.x |
||||||
|
value: -0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.y |
||||||
|
value: -0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.z |
||||||
|
value: -0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.w |
||||||
|
value: 1 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_RootOrder |
||||||
|
value: 1 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchoredPosition.x |
||||||
|
value: 25 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchoredPosition.y |
||||||
|
value: -25 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_SizeDelta.x |
||||||
|
value: 50 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_SizeDelta.y |
||||||
|
value: 285 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMin.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMin.y |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMax.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMax.y |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_Pivot.x |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_Pivot.y |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
m_RemovedComponents: [] |
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 364b73b05bdc99a458ed129f06b58a66, type: 2} |
||||||
|
m_IsPrefabAsset: 0 |
||||||
|
--- !u!224 &1389643387 stripped |
||||||
|
RectTransform: |
||||||
|
m_CorrespondingSourceObject: {fileID: 224368088909558600, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
m_PrefabInternal: {fileID: 1389643386} |
||||||
|
--- !u!114 &1389643388 stripped |
||||||
|
MonoBehaviour: |
||||||
|
m_CorrespondingSourceObject: {fileID: 114626009689362896, guid: 364b73b05bdc99a458ed129f06b58a66, |
||||||
|
type: 2} |
||||||
|
m_PrefabInternal: {fileID: 1389643386} |
||||||
|
m_Script: {fileID: 11500000, guid: 72fa529d1dea2a845b05e00a99658d71, type: 3} |
||||||
|
--- !u!1001 &1405471466 |
||||||
|
Prefab: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 2 |
||||||
|
m_Modification: |
||||||
|
m_TransformParent: {fileID: 1599924583} |
||||||
|
m_Modifications: |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalPosition.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalPosition.y |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalPosition.z |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.y |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.z |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_LocalRotation.w |
||||||
|
value: 1 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_RootOrder |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchoredPosition.x |
||||||
|
value: 180 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchoredPosition.y |
||||||
|
value: -25 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_SizeDelta.x |
||||||
|
value: 360 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_SizeDelta.y |
||||||
|
value: 50 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMin.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMin.y |
||||||
|
value: 1 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMax.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_AnchorMax.y |
||||||
|
value: 1 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_Pivot.x |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
propertyPath: m_Pivot.y |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
m_RemovedComponents: [] |
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 57d6fecbc8dac514d9d092ad19230c94, type: 2} |
||||||
|
m_IsPrefabAsset: 0 |
||||||
|
--- !u!224 &1405471467 stripped |
||||||
|
RectTransform: |
||||||
|
m_CorrespondingSourceObject: {fileID: 224437245420184406, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
m_PrefabInternal: {fileID: 1405471466} |
||||||
|
--- !u!114 &1405471468 stripped |
||||||
|
MonoBehaviour: |
||||||
|
m_CorrespondingSourceObject: {fileID: 114970952197763046, guid: 57d6fecbc8dac514d9d092ad19230c94, |
||||||
|
type: 2} |
||||||
|
m_PrefabInternal: {fileID: 1405471466} |
||||||
|
m_Script: {fileID: 11500000, guid: 72fa529d1dea2a845b05e00a99658d71, type: 3} |
||||||
|
--- !u!1001 &1409469104 |
||||||
|
Prefab: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 2 |
||||||
|
m_Modification: |
||||||
|
m_TransformParent: {fileID: 0} |
||||||
|
m_Modifications: |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalPosition.x |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalPosition.y |
||||||
|
value: 2.57 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalPosition.z |
||||||
|
value: 0 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalRotation.x |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalRotation.y |
||||||
|
value: 0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalRotation.z |
||||||
|
value: -0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalRotation.w |
||||||
|
value: -0.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_RootOrder |
||||||
|
value: 1 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalScale.y |
||||||
|
value: 0.1 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalScale.z |
||||||
|
value: 2 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalScale.x |
||||||
|
value: 1.5 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalEulerAnglesHint.y |
||||||
|
value: 270 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
- target: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
propertyPath: m_LocalEulerAnglesHint.z |
||||||
|
value: 90 |
||||||
|
objectReference: {fileID: 0} |
||||||
|
m_RemovedComponents: [] |
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 20d7688177ab3034aa2bb79e98227a84, type: 2} |
||||||
|
m_IsPrefabAsset: 0 |
||||||
|
--- !u!4 &1409469105 stripped |
||||||
|
Transform: |
||||||
|
m_CorrespondingSourceObject: {fileID: 4854354438479990, guid: 20d7688177ab3034aa2bb79e98227a84, |
||||||
|
type: 2} |
||||||
|
m_PrefabInternal: {fileID: 1409469104} |
||||||
|
--- !u!1 &1599924579 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 1599924583} |
||||||
|
- component: {fileID: 1599924582} |
||||||
|
- component: {fileID: 1599924581} |
||||||
|
- component: {fileID: 1599924580} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Canvas |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!114 &1599924580 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1599924579} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_IgnoreReversedGraphics: 1 |
||||||
|
m_BlockingObjects: 0 |
||||||
|
m_BlockingMask: |
||||||
|
serializedVersion: 2 |
||||||
|
m_Bits: 4294967295 |
||||||
|
--- !u!114 &1599924581 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1599924579} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} |
||||||
|
m_Name: |
||||||
|
m_EditorClassIdentifier: |
||||||
|
m_UiScaleMode: 0 |
||||||
|
m_ReferencePixelsPerUnit: 100 |
||||||
|
m_ScaleFactor: 1 |
||||||
|
m_ReferenceResolution: {x: 800, y: 600} |
||||||
|
m_ScreenMatchMode: 0 |
||||||
|
m_MatchWidthOrHeight: 0 |
||||||
|
m_PhysicalUnit: 3 |
||||||
|
m_FallbackScreenDPI: 96 |
||||||
|
m_DefaultSpriteDPI: 96 |
||||||
|
m_DynamicPixelsPerUnit: 1 |
||||||
|
--- !u!223 &1599924582 |
||||||
|
Canvas: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1599924579} |
||||||
|
m_Enabled: 1 |
||||||
|
serializedVersion: 3 |
||||||
|
m_RenderMode: 0 |
||||||
|
m_Camera: {fileID: 0} |
||||||
|
m_PlaneDistance: 100 |
||||||
|
m_PixelPerfect: 0 |
||||||
|
m_ReceivesEvents: 1 |
||||||
|
m_OverrideSorting: 0 |
||||||
|
m_OverridePixelPerfect: 0 |
||||||
|
m_SortingBucketNormalizedSize: 0 |
||||||
|
m_AdditionalShaderChannelsFlag: 0 |
||||||
|
m_SortingLayerID: 0 |
||||||
|
m_SortingOrder: 0 |
||||||
|
m_TargetDisplay: 0 |
||||||
|
--- !u!224 &1599924583 |
||||||
|
RectTransform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1599924579} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 0, y: 0, z: 0} |
||||||
|
m_Children: |
||||||
|
- {fileID: 1405471467} |
||||||
|
- {fileID: 1389643387} |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 5 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
m_AnchorMin: {x: 0, y: 0} |
||||||
|
m_AnchorMax: {x: 0, y: 0} |
||||||
|
m_AnchoredPosition: {x: 0, y: 0} |
||||||
|
m_SizeDelta: {x: 0, y: 0} |
||||||
|
m_Pivot: {x: 0, y: 0} |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 5f28c3dffe484eb4f9b598cc974f91d0 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: b91e8bcdfe0d40340acfdb07ec6ac489 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,258 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!29 &1 |
||||||
|
OcclusionCullingSettings: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 2 |
||||||
|
m_OcclusionBakeSettings: |
||||||
|
smallestOccluder: 5 |
||||||
|
smallestHole: 0.25 |
||||||
|
backfaceThreshold: 100 |
||||||
|
m_SceneGUID: 00000000000000000000000000000000 |
||||||
|
m_OcclusionCullingData: {fileID: 0} |
||||||
|
--- !u!104 &2 |
||||||
|
RenderSettings: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 9 |
||||||
|
m_Fog: 0 |
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} |
||||||
|
m_FogMode: 3 |
||||||
|
m_FogDensity: 0.01 |
||||||
|
m_LinearFogStart: 0 |
||||||
|
m_LinearFogEnd: 300 |
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} |
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} |
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} |
||||||
|
m_AmbientIntensity: 1 |
||||||
|
m_AmbientMode: 0 |
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} |
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_HaloStrength: 0.5 |
||||||
|
m_FlareStrength: 1 |
||||||
|
m_FlareFadeSpeed: 3 |
||||||
|
m_HaloTexture: {fileID: 0} |
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
m_DefaultReflectionMode: 0 |
||||||
|
m_DefaultReflectionResolution: 128 |
||||||
|
m_ReflectionBounces: 1 |
||||||
|
m_ReflectionIntensity: 1 |
||||||
|
m_CustomReflection: {fileID: 0} |
||||||
|
m_Sun: {fileID: 0} |
||||||
|
m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} |
||||||
|
m_UseRadianceAmbientProbe: 0 |
||||||
|
--- !u!157 &3 |
||||||
|
LightmapSettings: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
serializedVersion: 11 |
||||||
|
m_GIWorkflowMode: 0 |
||||||
|
m_GISettings: |
||||||
|
serializedVersion: 2 |
||||||
|
m_BounceScale: 1 |
||||||
|
m_IndirectOutputScale: 1 |
||||||
|
m_AlbedoBoost: 1 |
||||||
|
m_TemporalCoherenceThreshold: 1 |
||||||
|
m_EnvironmentLightingMode: 0 |
||||||
|
m_EnableBakedLightmaps: 1 |
||||||
|
m_EnableRealtimeLightmaps: 0 |
||||||
|
m_LightmapEditorSettings: |
||||||
|
serializedVersion: 10 |
||||||
|
m_Resolution: 2 |
||||||
|
m_BakeResolution: 10 |
||||||
|
m_AtlasSize: 512 |
||||||
|
m_AO: 0 |
||||||
|
m_AOMaxDistance: 1 |
||||||
|
m_CompAOExponent: 1 |
||||||
|
m_CompAOExponentDirect: 0 |
||||||
|
m_Padding: 2 |
||||||
|
m_LightmapParameters: {fileID: 0} |
||||||
|
m_LightmapsBakeMode: 1 |
||||||
|
m_TextureCompression: 1 |
||||||
|
m_FinalGather: 0 |
||||||
|
m_FinalGatherFiltering: 1 |
||||||
|
m_FinalGatherRayCount: 256 |
||||||
|
m_ReflectionCompression: 2 |
||||||
|
m_MixedBakeMode: 2 |
||||||
|
m_BakeBackend: 1 |
||||||
|
m_PVRSampling: 1 |
||||||
|
m_PVRDirectSampleCount: 32 |
||||||
|
m_PVRSampleCount: 256 |
||||||
|
m_PVRBounces: 2 |
||||||
|
m_PVRFilterTypeDirect: 0 |
||||||
|
m_PVRFilterTypeIndirect: 0 |
||||||
|
m_PVRFilterTypeAO: 0 |
||||||
|
m_PVRFilteringMode: 1 |
||||||
|
m_PVRCulling: 1 |
||||||
|
m_PVRFilteringGaussRadiusDirect: 1 |
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5 |
||||||
|
m_PVRFilteringGaussRadiusAO: 2 |
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5 |
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2 |
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1 |
||||||
|
m_ShowResolutionOverlay: 1 |
||||||
|
m_LightingDataAsset: {fileID: 0} |
||||||
|
m_UseShadowmask: 1 |
||||||
|
--- !u!196 &4 |
||||||
|
NavMeshSettings: |
||||||
|
serializedVersion: 2 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_BuildSettings: |
||||||
|
serializedVersion: 2 |
||||||
|
agentTypeID: 0 |
||||||
|
agentRadius: 0.5 |
||||||
|
agentHeight: 2 |
||||||
|
agentSlope: 45 |
||||||
|
agentClimb: 0.4 |
||||||
|
ledgeDropHeight: 0 |
||||||
|
maxJumpAcrossDistance: 0 |
||||||
|
minRegionArea: 2 |
||||||
|
manualCellSize: 0 |
||||||
|
cellSize: 0.16666667 |
||||||
|
manualTileSize: 0 |
||||||
|
tileSize: 256 |
||||||
|
accuratePlacement: 0 |
||||||
|
debug: |
||||||
|
m_Flags: 0 |
||||||
|
m_NavMeshData: {fileID: 0} |
||||||
|
--- !u!1 &170076733 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 170076735} |
||||||
|
- component: {fileID: 170076734} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Directional Light |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!108 &170076734 |
||||||
|
Light: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 170076733} |
||||||
|
m_Enabled: 1 |
||||||
|
serializedVersion: 8 |
||||||
|
m_Type: 1 |
||||||
|
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} |
||||||
|
m_Intensity: 1 |
||||||
|
m_Range: 10 |
||||||
|
m_SpotAngle: 30 |
||||||
|
m_CookieSize: 10 |
||||||
|
m_Shadows: |
||||||
|
m_Type: 2 |
||||||
|
m_Resolution: -1 |
||||||
|
m_CustomResolution: -1 |
||||||
|
m_Strength: 1 |
||||||
|
m_Bias: 0.05 |
||||||
|
m_NormalBias: 0.4 |
||||||
|
m_NearPlane: 0.2 |
||||||
|
m_Cookie: {fileID: 0} |
||||||
|
m_DrawHalo: 0 |
||||||
|
m_Flare: {fileID: 0} |
||||||
|
m_RenderMode: 0 |
||||||
|
m_CullingMask: |
||||||
|
serializedVersion: 2 |
||||||
|
m_Bits: 4294967295 |
||||||
|
m_Lightmapping: 1 |
||||||
|
m_LightShadowCasterMode: 0 |
||||||
|
m_AreaSize: {x: 1, y: 1} |
||||||
|
m_BounceIntensity: 1 |
||||||
|
m_ColorTemperature: 6570 |
||||||
|
m_UseColorTemperature: 0 |
||||||
|
m_ShadowRadius: 0 |
||||||
|
m_ShadowAngle: 0 |
||||||
|
--- !u!4 &170076735 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 170076733} |
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} |
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 1 |
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} |
||||||
|
--- !u!1 &534669902 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 534669905} |
||||||
|
- component: {fileID: 534669904} |
||||||
|
- component: {fileID: 534669903} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Main Camera |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!81 &534669903 |
||||||
|
AudioListener: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 534669902} |
||||||
|
m_Enabled: 1 |
||||||
|
--- !u!20 &534669904 |
||||||
|
Camera: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 534669902} |
||||||
|
m_Enabled: 1 |
||||||
|
serializedVersion: 2 |
||||||
|
m_ClearFlags: 1 |
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} |
||||||
|
m_projectionMatrixMode: 1 |
||||||
|
m_SensorSize: {x: 36, y: 24} |
||||||
|
m_LensShift: {x: 0, y: 0} |
||||||
|
m_FocalLength: 50 |
||||||
|
m_NormalizedViewPortRect: |
||||||
|
serializedVersion: 2 |
||||||
|
x: 0 |
||||||
|
y: 0 |
||||||
|
width: 1 |
||||||
|
height: 1 |
||||||
|
near clip plane: 0.3 |
||||||
|
far clip plane: 1000 |
||||||
|
field of view: 60 |
||||||
|
orthographic: 0 |
||||||
|
orthographic size: 5 |
||||||
|
m_Depth: -1 |
||||||
|
m_CullingMask: |
||||||
|
serializedVersion: 2 |
||||||
|
m_Bits: 4294967295 |
||||||
|
m_RenderingPath: -1 |
||||||
|
m_TargetTexture: {fileID: 0} |
||||||
|
m_TargetDisplay: 0 |
||||||
|
m_TargetEye: 3 |
||||||
|
m_HDR: 1 |
||||||
|
m_AllowMSAA: 1 |
||||||
|
m_AllowDynamicResolution: 0 |
||||||
|
m_ForceIntoRT: 0 |
||||||
|
m_OcclusionCulling: 1 |
||||||
|
m_StereoConvergence: 10 |
||||||
|
m_StereoSeparation: 0.022 |
||||||
|
--- !u!4 &534669905 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 534669902} |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 1, z: -10} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_RootOrder: 0 |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 99c9720ab356a0642a771bea13969a05 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 8f8159cab31b51041a806d94b8e97319 |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 27dbeba3f3d6fdd4ebe03cd188f5da79 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,58 @@ |
|||||||
|
Shader "Unlit/MyShader" |
||||||
|
{ |
||||||
|
Properties |
||||||
|
{ |
||||||
|
_MainTex ("Texture", 2D) = "white" {} |
||||||
|
} |
||||||
|
SubShader |
||||||
|
{ |
||||||
|
Tags { "RenderType"="Opaque" } |
||||||
|
LOD 100 |
||||||
|
|
||||||
|
Pass |
||||||
|
{ |
||||||
|
CGPROGRAM |
||||||
|
#pragma vertex vert |
||||||
|
#pragma fragment frag |
||||||
|
// make fog work |
||||||
|
#pragma multi_compile_fog |
||||||
|
|
||||||
|
#include "UnityCG.cginc" |
||||||
|
|
||||||
|
struct appdata |
||||||
|
{ |
||||||
|
float4 vertex : POSITION; |
||||||
|
float2 uv : TEXCOORD0; |
||||||
|
}; |
||||||
|
|
||||||
|
struct v2f |
||||||
|
{ |
||||||
|
float2 uv : TEXCOORD0; |
||||||
|
UNITY_FOG_COORDS(1) |
||||||
|
float4 vertex : SV_POSITION; |
||||||
|
}; |
||||||
|
|
||||||
|
sampler2D _MainTex; |
||||||
|
float4 _MainTex_ST; |
||||||
|
|
||||||
|
v2f vert (appdata v) |
||||||
|
{ |
||||||
|
v2f o; |
||||||
|
o.vertex = UnityObjectToClipPos(v.vertex); |
||||||
|
o.uv = TRANSFORM_TEX(v.uv, _MainTex); |
||||||
|
UNITY_TRANSFER_FOG(o,o.vertex); |
||||||
|
return o; |
||||||
|
} |
||||||
|
|
||||||
|
fixed4 frag (v2f i) : SV_Target |
||||||
|
{ |
||||||
|
// sample the texture |
||||||
|
fixed4 col = tex2D(_MainTex, i.uv); |
||||||
|
// apply fog |
||||||
|
UNITY_APPLY_FOG(i.fogCoord, col); |
||||||
|
return col; |
||||||
|
} |
||||||
|
ENDCG |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: e0c25f1fbc629ff47b927ff8b39d3abc |
||||||
|
ShaderImporter: |
||||||
|
externalObjects: {} |
||||||
|
defaultTextures: [] |
||||||
|
nonModifiableTextures: [] |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: ba60e7e7896ed304388dcbebe9b56bd4 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,132 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: dff3e7effdd533c46a367b83d25d471b |
||||||
|
TextureImporter: |
||||||
|
fileIDToRecycleName: {} |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 7 |
||||||
|
mipmaps: |
||||||
|
mipMapMode: 0 |
||||||
|
enableMipMap: 0 |
||||||
|
sRGBTexture: 1 |
||||||
|
linearTexture: 0 |
||||||
|
fadeOut: 0 |
||||||
|
borderMipMap: 0 |
||||||
|
mipMapsPreserveCoverage: 0 |
||||||
|
alphaTestReferenceValue: 0.5 |
||||||
|
mipMapFadeDistanceStart: 1 |
||||||
|
mipMapFadeDistanceEnd: 3 |
||||||
|
bumpmap: |
||||||
|
convertToNormalMap: 0 |
||||||
|
externalNormalMap: 0 |
||||||
|
heightScale: 0.25 |
||||||
|
normalMapFilter: 0 |
||||||
|
isReadable: 0 |
||||||
|
streamingMipmaps: 0 |
||||||
|
streamingMipmapsPriority: 0 |
||||||
|
grayScaleToAlpha: 0 |
||||||
|
generateCubemap: 6 |
||||||
|
cubemapConvolution: 0 |
||||||
|
seamlessCubemap: 0 |
||||||
|
textureFormat: 1 |
||||||
|
maxTextureSize: 2048 |
||||||
|
textureSettings: |
||||||
|
serializedVersion: 2 |
||||||
|
filterMode: -1 |
||||||
|
aniso: -1 |
||||||
|
mipBias: -100 |
||||||
|
wrapU: 1 |
||||||
|
wrapV: 1 |
||||||
|
wrapW: -1 |
||||||
|
nPOTScale: 0 |
||||||
|
lightmap: 0 |
||||||
|
compressionQuality: 50 |
||||||
|
spriteMode: 1 |
||||||
|
spriteExtrude: 1 |
||||||
|
spriteMeshType: 1 |
||||||
|
alignment: 0 |
||||||
|
spritePivot: {x: 0.5, y: 0.5} |
||||||
|
spritePixelsToUnits: 100 |
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
||||||
|
spriteGenerateFallbackPhysicsShape: 1 |
||||||
|
alphaUsage: 1 |
||||||
|
alphaIsTransparency: 1 |
||||||
|
spriteTessellationDetail: -1 |
||||||
|
textureType: 8 |
||||||
|
textureShape: 1 |
||||||
|
singleChannelComponent: 0 |
||||||
|
maxTextureSizeSet: 0 |
||||||
|
compressionQualitySet: 0 |
||||||
|
textureFormatSet: 0 |
||||||
|
platformSettings: |
||||||
|
- serializedVersion: 2 |
||||||
|
buildTarget: DefaultTexturePlatform |
||||||
|
maxTextureSize: 2048 |
||||||
|
resizeAlgorithm: 0 |
||||||
|
textureFormat: -1 |
||||||
|
textureCompression: 1 |
||||||
|
compressionQuality: 50 |
||||||
|
crunchedCompression: 0 |
||||||
|
allowsAlphaSplitting: 0 |
||||||
|
overridden: 0 |
||||||
|
androidETC2FallbackOverride: 0 |
||||||
|
- serializedVersion: 2 |
||||||
|
buildTarget: Standalone |
||||||
|
maxTextureSize: 2048 |
||||||
|
resizeAlgorithm: 0 |
||||||
|
textureFormat: -1 |
||||||
|
textureCompression: 1 |
||||||
|
compressionQuality: 50 |
||||||
|
crunchedCompression: 0 |
||||||
|
allowsAlphaSplitting: 0 |
||||||
|
overridden: 0 |
||||||
|
androidETC2FallbackOverride: 0 |
||||||
|
- serializedVersion: 2 |
||||||
|
buildTarget: iPhone |
||||||
|
maxTextureSize: 2048 |
||||||
|
resizeAlgorithm: 0 |
||||||
|
textureFormat: -1 |
||||||
|
textureCompression: 1 |
||||||
|
compressionQuality: 50 |
||||||
|
crunchedCompression: 0 |
||||||
|
allowsAlphaSplitting: 0 |
||||||
|
overridden: 0 |
||||||
|
androidETC2FallbackOverride: 0 |
||||||
|
- serializedVersion: 2 |
||||||
|
buildTarget: Android |
||||||
|
maxTextureSize: 2048 |
||||||
|
resizeAlgorithm: 0 |
||||||
|
textureFormat: -1 |
||||||
|
textureCompression: 1 |
||||||
|
compressionQuality: 50 |
||||||
|
crunchedCompression: 0 |
||||||
|
allowsAlphaSplitting: 0 |
||||||
|
overridden: 0 |
||||||
|
androidETC2FallbackOverride: 0 |
||||||
|
- serializedVersion: 2 |
||||||
|
buildTarget: WebGL |
||||||
|
maxTextureSize: 2048 |
||||||
|
resizeAlgorithm: 0 |
||||||
|
textureFormat: -1 |
||||||
|
textureCompression: 1 |
||||||
|
compressionQuality: 50 |
||||||
|
crunchedCompression: 0 |
||||||
|
allowsAlphaSplitting: 0 |
||||||
|
overridden: 0 |
||||||
|
androidETC2FallbackOverride: 0 |
||||||
|
spriteSheet: |
||||||
|
serializedVersion: 2 |
||||||
|
sprites: [] |
||||||
|
outline: [] |
||||||
|
physicsShape: [] |
||||||
|
bones: [] |
||||||
|
spriteID: |
||||||
|
vertices: [] |
||||||
|
indices: |
||||||
|
edges: [] |
||||||
|
weights: [] |
||||||
|
spritePackingTag: |
||||||
|
pSDRemoveMatte: 0 |
||||||
|
pSDShowRemoveMatteOption: 0 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 4a5338f45e3c01045953ea095ec264fb |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,76 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: Board |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: ETC1_EXTERNAL_ALPHA |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 0.10453009, g: 0.22444806, b: 0.2735849, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 7ac2528e2ab2cbc448770b550ca6829b |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,91 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: Glass |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: _ALPHABLEND_ON |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: 3000 |
||||||
|
stringTagMap: |
||||||
|
RenderType: Transparent |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _ColorMask: 15 |
||||||
|
- _Cull: 2 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 10 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 2 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 5 |
||||||
|
- _Stencil: 0 |
||||||
|
- _StencilComp: 8 |
||||||
|
- _StencilOp: 0 |
||||||
|
- _StencilReadMask: 255 |
||||||
|
- _StencilWriteMask: 255 |
||||||
|
- _UVSec: 0 |
||||||
|
- _UseUIAlphaClip: 0 |
||||||
|
- _WindQuality: 0 |
||||||
|
- _ZWrite: 0 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 0, g: 0, b: 0, a: 0.56078434} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
||||||
|
- _HueVariation: {r: 1, g: 0.5, b: 0, a: 0.1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: c2285cc0075b0904aba11a440b710662 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 41e166d3169236b409ca34a675a4580e |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,76 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: Blue |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 0, g: 0.4501295, b: 1, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 53a4b9ea828981c47ae982569172aeaa |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,76 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: Red |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 1, g: 0, b: 0, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: d376e4ccf8c9f2d428eb6fdf8f230718 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 0a67c1ebde2f701419ee342a29497f7d |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,83 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: A |
||||||
|
m_Shader: {fileID: 4800000, guid: e0c25f1fbc629ff47b927ff8b39d3abc, type: 3} |
||||||
|
m_ShaderKeywords: |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 10300, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _Tex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _Exposure: 1 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _Rotation: 0 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
||||||
|
- _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 4ea7f207cbf55df48a060d452f3e9853 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,76 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: Sprite |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: ETC1_EXTERNAL_ALPHA |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 264a8026f6825c042944cf8bdf356431 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,76 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: foot |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 0, g: 0, b: 0, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 42707bafbb4dc6d41b3fac8302bac345 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,76 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: line |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: ETC1_EXTERNAL_ALPHA |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0.5 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 1 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: d96bb49ec14ffd14bb392fee0e91a9e1 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,76 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!21 &2100000 |
||||||
|
Material: |
||||||
|
serializedVersion: 6 |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInternal: {fileID: 0} |
||||||
|
m_Name: tabel |
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
||||||
|
m_ShaderKeywords: ETC1_EXTERNAL_ALPHA |
||||||
|
m_LightmapFlags: 4 |
||||||
|
m_EnableInstancingVariants: 0 |
||||||
|
m_DoubleSidedGI: 0 |
||||||
|
m_CustomRenderQueue: -1 |
||||||
|
stringTagMap: {} |
||||||
|
disabledShaderPasses: [] |
||||||
|
m_SavedProperties: |
||||||
|
serializedVersion: 3 |
||||||
|
m_TexEnvs: |
||||||
|
- _BumpMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailAlbedoMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailMask: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _DetailNormalMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _EmissionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MainTex: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _MetallicGlossMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _OcclusionMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
- _ParallaxMap: |
||||||
|
m_Texture: {fileID: 0} |
||||||
|
m_Scale: {x: 1, y: 1} |
||||||
|
m_Offset: {x: 0, y: 0} |
||||||
|
m_Floats: |
||||||
|
- _BumpScale: 1 |
||||||
|
- _Cutoff: 0.5 |
||||||
|
- _DetailNormalMapScale: 1 |
||||||
|
- _DstBlend: 0 |
||||||
|
- _GlossMapScale: 1 |
||||||
|
- _Glossiness: 0 |
||||||
|
- _GlossyReflections: 1 |
||||||
|
- _Metallic: 0 |
||||||
|
- _Mode: 0 |
||||||
|
- _OcclusionStrength: 1 |
||||||
|
- _Parallax: 0.02 |
||||||
|
- _SmoothnessTextureChannel: 0 |
||||||
|
- _SpecularHighlights: 1 |
||||||
|
- _SrcBlend: 1 |
||||||
|
- _UVSec: 0 |
||||||
|
- _ZWrite: 1 |
||||||
|
m_Colors: |
||||||
|
- _Color: {r: 0.6132076, g: 0.6132076, b: 0.6132076, a: 1} |
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: c33099cc9d2e28d4eab41f33d757fcf6 |
||||||
|
NativeFormatImporter: |
||||||
|
externalObjects: {} |
||||||
|
mainObjectFileID: 2100000 |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: c01f48914451ee7458b09edbd7adfcc8 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: df19c0c43899ea8449a5ccf9547a584a |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,13 @@ |
|||||||
|
//MPU9250陀螺仪模块实体类 |
||||||
|
public class MPU9250Data{ |
||||||
|
public double Temperature { set; get; } |
||||||
|
public double GyroX { set; get; } |
||||||
|
public double GyroY { set; get; } |
||||||
|
public double GyroZ { set; get; } |
||||||
|
public double AccelX { set; get; } |
||||||
|
public double AccelY { set; get; } |
||||||
|
public double AccelZ { set; get; } |
||||||
|
public double MagneticX { set; get; } |
||||||
|
public double MagneticY { set; get; } |
||||||
|
public double MagneticZ { set; get; } |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: d556d41ba0ef18b47a58a4e031689dfa |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,7 @@ |
|||||||
|
//MPU9250加速计实体类 |
||||||
|
public class MPUAccelData |
||||||
|
{ |
||||||
|
public double AccelX { set; get; } |
||||||
|
public double AccelY { set; get; } |
||||||
|
public double AccelZ { set; get; } |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 80437c579ec444c4a83c83d2853116b6 |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,10 @@ |
|||||||
|
//MPU6050陀螺仪模块实体类 |
||||||
|
public class MPUData { |
||||||
|
public double GyroX { set; get; } |
||||||
|
public double GyroY { set; get; } |
||||||
|
public double GyroZ { set; get; } |
||||||
|
public double Temperature { set; get; } |
||||||
|
public double AccelX { set; get; } |
||||||
|
public double AccelY { set; get; } |
||||||
|
public double AccelZ { set; get; } |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 5e373d86f7d3a54498d6bd90ba37f387 |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,6 @@ |
|||||||
|
//MPU6050姿态融合算法融合后欧拉角 |
||||||
|
public class MPUEulerAnglesData{ |
||||||
|
public double Pitch { set; get; } |
||||||
|
public double Roll { set; get; } |
||||||
|
public double Yaw { set; get; } |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: f1fadca1ecc93b1468c8842b58c1760d |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,7 @@ |
|||||||
|
//MPU9250磁力计实体类 |
||||||
|
public class MPUMagneticData |
||||||
|
{ |
||||||
|
public double MagneticX { set; get; } |
||||||
|
public double MagneticY { set; get; } |
||||||
|
public double MagneticZ { set; get; } |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: b78a2409e7493be4fa36160bd98233df |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,7 @@ |
|||||||
|
//MPU6050姿态融合算法融合后四元数 |
||||||
|
public class MPUQuaternion { |
||||||
|
public double q0 { set; get; } |
||||||
|
public double q1 { set; get; } |
||||||
|
public double q2 { set; get; } |
||||||
|
public double q3 { set; get; } |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: fad13b14dc7f9bf4289e29e25d65d1f8 |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,101 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.IO.Ports; |
||||||
|
using System.Threading; |
||||||
|
using UnityEngine; |
||||||
|
using LitJson; |
||||||
|
|
||||||
|
public class MyUnitySerialPort : MonoBehaviour { |
||||||
|
private SerialPort serialPort; |
||||||
|
private Thread readPortData; |
||||||
|
//public List<byte> listReceive = new List<byte>(); |
||||||
|
public string jsonData = ""; |
||||||
|
public Transform MpuBoardTrans; |
||||||
|
|
||||||
|
|
||||||
|
// Use this for initialization |
||||||
|
void Start () { |
||||||
|
//Application.targetFrameRate = 120; |
||||||
|
try |
||||||
|
{ |
||||||
|
serialPort = new SerialPort("COM4", 115200); |
||||||
|
serialPort.ReadTimeout = 500; |
||||||
|
if (!serialPort.IsOpen) |
||||||
|
{ |
||||||
|
serialPort.Open(); |
||||||
|
} |
||||||
|
readPortData = new Thread(new ThreadStart(readData)); |
||||||
|
readPortData.IsBackground = true; |
||||||
|
readPortData.Start(); |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Update is called once per frame |
||||||
|
void Update () { |
||||||
|
if (jsonData != "") { |
||||||
|
MPUQuaternion mpudata_ = JsonMapper.ToObject<MPUQuaternion>(jsonData); |
||||||
|
MpuBoardTrans.transform.localEulerAngles = TransQuaternionToEularAngles((float)mpudata_.q0, (float)mpudata_.q1, (float)mpudata_.q2, (float)mpudata_.q3); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//结束后关闭串口 |
||||||
|
private void OnDestroy() |
||||||
|
{ |
||||||
|
if (serialPort.IsOpen) |
||||||
|
serialPort.Close(); |
||||||
|
readPortData.Abort(); |
||||||
|
} |
||||||
|
|
||||||
|
//弧度转角度 |
||||||
|
private float TransRadToAngle(double rad) |
||||||
|
{ |
||||||
|
//return -(float)rad * 180 / Mathf.PI; |
||||||
|
return (float)rad * 90; |
||||||
|
} |
||||||
|
//Double转Float |
||||||
|
private float TransDoubleToFloat(double angle) |
||||||
|
{ |
||||||
|
//return -(float)rad * 180 / Mathf.PI; |
||||||
|
return (float)angle; |
||||||
|
} |
||||||
|
/// <summary> |
||||||
|
/// 读取数据 |
||||||
|
/// </summary> |
||||||
|
private void readData() |
||||||
|
{ |
||||||
|
try |
||||||
|
{ |
||||||
|
while (serialPort != null && serialPort.IsOpen) |
||||||
|
{ |
||||||
|
byte addr = Convert.ToByte(serialPort.ReadByte()); |
||||||
|
serialPort.DiscardInBuffer(); |
||||||
|
//listReceive.Add(addr); |
||||||
|
//print("{"+serialPort.ReadLine()); |
||||||
|
jsonData = "{" + serialPort.ReadLine(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//将四元数转换为欧拉角(pitch,yaw取负数的情况) |
||||||
|
public Vector3 TransQuaternionToEularAngles(float q0, float q1, float q2, float q3) |
||||||
|
{ |
||||||
|
float pitch = -Mathf.Asin(-2 * q1 * q3 + 2 * q0 * q2) * 57.3f; |
||||||
|
float roll = Mathf.Atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2 * q2 + 1) * 57.3f; |
||||||
|
float yaw = -Mathf.Atan2(2 * (q1 * q2 + q0 * q3), q0 * q0 + q1 * q1 - q2 * q2 - q3 * q3) * 57.3f; |
||||||
|
Vector3 eularAngles = new Vector3(pitch, yaw, roll); |
||||||
|
return eularAngles; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 124ab28672a6a104cab21f951dbdcc9c |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: f069669f196b83645a25c2fc7e3266fc |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,107 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.IO.Ports; |
||||||
|
using System.Threading; |
||||||
|
using UnityEngine; |
||||||
|
using LitJson; |
||||||
|
using AHRS; |
||||||
|
|
||||||
|
public class My9AxisSerialPort : MonoBehaviour { |
||||||
|
private SerialPort serialPort; |
||||||
|
private Thread readPortData; |
||||||
|
//public List<byte> listReceive = new List<byte>(); |
||||||
|
public string jsonData = ""; |
||||||
|
public Transform MpuBoardTrans; |
||||||
|
private MahonyAHRS ahrsObj = new MahonyAHRS(0.016f); |
||||||
|
|
||||||
|
|
||||||
|
// Use this for initialization |
||||||
|
void Start() |
||||||
|
{ |
||||||
|
//Application.targetFrameRate = 120; |
||||||
|
try |
||||||
|
{ |
||||||
|
serialPort = new SerialPort("COM4", 115200); |
||||||
|
serialPort.ReadTimeout = 500; |
||||||
|
if (!serialPort.IsOpen) |
||||||
|
{ |
||||||
|
serialPort.Open(); |
||||||
|
} |
||||||
|
readPortData = new Thread(new ThreadStart(readData)); |
||||||
|
readPortData.IsBackground = true; |
||||||
|
readPortData.Start(); |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Update is called once per frame |
||||||
|
void Update() |
||||||
|
{ |
||||||
|
if (jsonData != "") |
||||||
|
{ |
||||||
|
MPU9250Data mpudata_ = JsonMapper.ToObject<MPU9250Data>(jsonData); |
||||||
|
ahrsObj.Update((float)mpudata_.GyroX, (float)mpudata_.GyroY, (float)mpudata_.GyroZ, (float)mpudata_.AccelX, (float)mpudata_.AccelY, (float)mpudata_.AccelZ, (float)mpudata_.MagneticX, (float)mpudata_.MagneticY, (float)mpudata_.MagneticZ); |
||||||
|
MpuBoardTrans.transform.localEulerAngles = TransQuaternionToEularAngles(ahrsObj.Quaternion[0], ahrsObj.Quaternion[1], ahrsObj.Quaternion[2], ahrsObj.Quaternion[3]); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//结束后关闭串口 |
||||||
|
private void OnDestroy() |
||||||
|
{ |
||||||
|
if (serialPort.IsOpen) |
||||||
|
serialPort.Close(); |
||||||
|
readPortData.Abort(); |
||||||
|
} |
||||||
|
|
||||||
|
//弧度转角度 |
||||||
|
private float TransRadToAngle(double rad) |
||||||
|
{ |
||||||
|
//return -(float)rad * 180 / Mathf.PI; |
||||||
|
return (float)rad * 90; |
||||||
|
} |
||||||
|
//Double转Float |
||||||
|
private float TransDoubleToFloat(double angle) |
||||||
|
{ |
||||||
|
//return -(float)rad * 180 / Mathf.PI; |
||||||
|
return (float)angle; |
||||||
|
} |
||||||
|
/// <summary> |
||||||
|
/// 读取数据 |
||||||
|
/// </summary> |
||||||
|
private void readData() |
||||||
|
{ |
||||||
|
try |
||||||
|
{ |
||||||
|
while (serialPort != null && serialPort.IsOpen) |
||||||
|
{ |
||||||
|
byte addr = Convert.ToByte(serialPort.ReadByte()); |
||||||
|
serialPort.DiscardInBuffer(); |
||||||
|
//listReceive.Add(addr); |
||||||
|
//print("{"+serialPort.ReadLine()); |
||||||
|
jsonData = "{" + serialPort.ReadLine(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//将四元数转换为欧拉角(pitch,yaw取负数的情况) |
||||||
|
public Vector3 TransQuaternionToEularAngles(float q0, float q1, float q2, float q3) |
||||||
|
{ |
||||||
|
float pitch = -Mathf.Asin(-2 * q1 * q3 + 2 * q0 * q2) * 57.3f; |
||||||
|
float roll = Mathf.Atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2 * q2 + 1) * 57.3f; |
||||||
|
float yaw = -Mathf.Atan2(2 * (q1 * q2 + q0 * q3), q0 * q0 + q1 * q1 - q2 * q2 - q3 * q3) * 57.3f; |
||||||
|
Vector3 eularAngles = new Vector3(pitch, yaw, roll); |
||||||
|
return eularAngles; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: ab7d50adce3c662469fbc3ea36ba0b1a |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,100 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.IO.Ports; |
||||||
|
using System.Threading; |
||||||
|
using UnityEngine; |
||||||
|
using LitJson; |
||||||
|
|
||||||
|
public class MyAccelSerialPort : MonoBehaviour |
||||||
|
{ |
||||||
|
private SerialPort serialPort; |
||||||
|
private Thread readPortData; |
||||||
|
//public List<byte> listReceive = new List<byte>(); |
||||||
|
public string jsonData = ""; |
||||||
|
//根据受力情况设置小球的位置 |
||||||
|
public Transform AccelBall; |
||||||
|
|
||||||
|
|
||||||
|
// Use this for initialization |
||||||
|
void Start() |
||||||
|
{ |
||||||
|
//Application.targetFrameRate = 120; |
||||||
|
try |
||||||
|
{ |
||||||
|
serialPort = new SerialPort("COM4", 115200); |
||||||
|
serialPort.ReadTimeout = 500; |
||||||
|
if (!serialPort.IsOpen) |
||||||
|
{ |
||||||
|
serialPort.Open(); |
||||||
|
} |
||||||
|
readPortData = new Thread(new ThreadStart(readData)); |
||||||
|
readPortData.IsBackground = true; |
||||||
|
readPortData.Start(); |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Update is called once per frame |
||||||
|
void Update() |
||||||
|
{ |
||||||
|
if (jsonData != "") |
||||||
|
{ |
||||||
|
MPUAccelData mpudata_ = JsonMapper.ToObject<MPUAccelData>(jsonData); |
||||||
|
AccelBall.localPosition = new Vector3((float)mpudata_.AccelX/2, (float)mpudata_.AccelY/2 - 2.3f, (float)mpudata_.AccelZ/2 + 1.2f); |
||||||
|
//Debug.LogWarning("Temperature = " + mpudata_.Temperature); |
||||||
|
//print("x=" + mpudata_.GyroX + "||y=" + mpudata_.GyroY + "||z=" + mpudata_.GyroZ + "____Ax=" + mpudata_.AccelX + "||Ay=" + mpudata_.AccelY + "||Az=" + mpudata_.AccelZ + "-----" + Time.deltaTime); |
||||||
|
//MpuBoardTrans.transform.localPosition += new Vector3(speedX/1000, 0, 0); |
||||||
|
//print("speed="+speedY); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//结束后关闭串口 |
||||||
|
private void OnDestroy() |
||||||
|
{ |
||||||
|
if (serialPort.IsOpen) |
||||||
|
serialPort.Close(); |
||||||
|
readPortData.Abort(); |
||||||
|
} |
||||||
|
|
||||||
|
//弧度转角度 |
||||||
|
private float TransRadToAngle(double rad) |
||||||
|
{ |
||||||
|
//return -(float)rad * 180 / Mathf.PI; |
||||||
|
return (float)rad * 90; |
||||||
|
} |
||||||
|
/// <summary> |
||||||
|
/// 读取数据 |
||||||
|
/// </summary> |
||||||
|
private void readData() |
||||||
|
{ |
||||||
|
try |
||||||
|
{ |
||||||
|
while (serialPort != null && serialPort.IsOpen) |
||||||
|
{ |
||||||
|
byte addr = Convert.ToByte(serialPort.ReadByte()); |
||||||
|
serialPort.DiscardInBuffer(); |
||||||
|
//listReceive.Add(addr); |
||||||
|
//print("{"+serialPort.ReadLine()); |
||||||
|
jsonData = "{" + serialPort.ReadLine(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private void caculateSpeed(float accelSpeed) |
||||||
|
{ |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: a0061e86cc4079144b3748956df78ad9 |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,16 @@ |
|||||||
|
using System.Collections; |
||||||
|
using System.Collections.Generic; |
||||||
|
using UnityEngine; |
||||||
|
|
||||||
|
public class MyAngleSerialPort : MonoBehaviour { |
||||||
|
|
||||||
|
// Use this for initialization |
||||||
|
void Start () { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
// Update is called once per frame |
||||||
|
void Update () { |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 4a0ac8ac7b846b04c820bc886a63fe18 |
||||||
|
MonoImporter: |
||||||
|
externalObjects: {} |
||||||
|
serializedVersion: 2 |
||||||
|
defaultReferences: [] |
||||||
|
executionOrder: 0 |
||||||
|
icon: {instanceID: 0} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,101 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.IO.Ports; |
||||||
|
using System.Threading; |
||||||
|
using UnityEngine; |
||||||
|
using LitJson; |
||||||
|
|
||||||
|
public class MyMagneticSerialPort : MonoBehaviour |
||||||
|
{ |
||||||
|
private SerialPort serialPort; |
||||||
|
private Thread readPortData; |
||||||
|
//public List<byte> listReceive = new List<byte>(); |
||||||
|
public string jsonData = ""; |
||||||
|
//根据磁场数据反射磁场针转向 |
||||||
|
public Transform MagneticNeedle; |
||||||
|
|
||||||
|
|
||||||
|
// Use this for initialization |
||||||
|
void Start() |
||||||
|
{ |
||||||
|
//Application.targetFrameRate = 120; |
||||||
|
try |
||||||
|
{ |
||||||
|
serialPort = new SerialPort("COM4", 115200); |
||||||
|
serialPort.ReadTimeout = 500; |
||||||
|
if (!serialPort.IsOpen) |
||||||
|
{ |
||||||
|
serialPort.Open(); |
||||||
|
} |
||||||
|
readPortData = new Thread(new ThreadStart(readData)); |
||||||
|
readPortData.IsBackground = true; |
||||||
|
readPortData.Start(); |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Update is called once per frame |
||||||
|
void Update() |
||||||
|
{ |
||||||
|
if (jsonData != "") |
||||||
|
{ |
||||||
|
MPUMagneticData mpudata_ = JsonMapper.ToObject<MPUMagneticData>(jsonData); |
||||||
|
MagneticNeedle.localEulerAngles = new Vector3(((float)mpudata_.MagneticX-5)*4, ((float)mpudata_.MagneticY-67)*4, ((float)mpudata_.MagneticZ - 5) * 4); |
||||||
|
//Debug.LogWarning("Temperature = " + mpudata_.Temperature); |
||||||
|
//print("x=" + mpudata_.GyroX + "||y=" + mpudata_.GyroY + "||z=" + mpudata_.GyroZ + "____Ax=" + mpudata_.AccelX + "||Ay=" + mpudata_.AccelY + "||Az=" + mpudata_.AccelZ + "-----" + Time.deltaTime); |
||||||
|
//MpuBoardTrans.transform.localPosition += new Vector3(speedX/1000, 0, 0); |
||||||
|
//print("speed="+speedY); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//结束后关闭串口 |
||||||
|
private void OnDestroy() |
||||||
|
{ |
||||||
|
if (serialPort.IsOpen) |
||||||
|
serialPort.Close(); |
||||||
|
readPortData.Abort(); |
||||||
|
} |
||||||
|
|
||||||
|
//弧度转角度 |
||||||
|
private float TransRadToAngle(double rad) |
||||||
|
{ |
||||||
|
//return -(float)rad * 180 / Mathf.PI; |
||||||
|
return (float)rad * 90; |
||||||
|
} |
||||||
|
/// <summary> |
||||||
|
/// 读取数据 |
||||||
|
/// </summary> |
||||||
|
private void readData() |
||||||
|
{ |
||||||
|
try |
||||||
|
{ |
||||||
|
while (serialPort != null && serialPort.IsOpen) |
||||||
|
{ |
||||||
|
byte addr = Convert.ToByte(serialPort.ReadByte()); |
||||||
|
serialPort.DiscardInBuffer(); |
||||||
|
//listReceive.Add(addr); |
||||||
|
//print("{"+serialPort.ReadLine()); |
||||||
|
jsonData = "{" + serialPort.ReadLine(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception) |
||||||
|
{ |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private void caculateSpeed(float accelSpeed) |
||||||
|
{ |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue