Unity下计步器Pedometer的实现

1.环境
unity2018,Android(小米5)
2.原理
加速度传感器的计步算法Pedometer
3.实现
注释写的很清楚了应该

using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
#pragma warning disable CS0618public class pedometer : MonoBehaviour
{public Text statusText,stepsText;public float lowLimit = 0.005f; //平缓public float highLimit = 0.1f; // 走路时的波峰波谷public float vertHighLimit = 0.25f;//跳跃时的波峰波谷private bool isHigh = false; // 状态private float filterCurrent = 10.0f; // 滤波参数 得到拟合值private float filterAverage = 0.1f; //   滤波参数  得到均值private float accelerationCurrent = 0f; //拟合值private float accelerationAverage = 0f;//均值private int steps = 0; // 步数private int oldSteps;private float deltaTime = 0f;//计时器private int jumpCount = 0;//跳跃数private int oldjumpCount = 0;private bool startTimer = false;//开始计时private bool isWalking = false;private bool isJumping = false;void Awake(){accelerationAverage = Input.acceleration.magnitude; oldSteps = steps;oldjumpCount =jumpCount ;}void Update(){checkWalkingAndJumping(); // 检测是否行走if (isWalking){statusText.text = ("状态:行走");}else if (!isWalking){statusText.text = ("状态:不动");}if (isJumping){statusText.text = ("状态:跳跃");}}void FixedUpdate(){//通过Lerp对Input.acceleration.magnitude(加速度标量和)滤波//这里使用线性插值的公式正好为EMA一次指数滤波 y[i]=y[i-1]+(x[i]-y[i])*k=(1-k)*y[i]+kx[i]accelerationCurrent = Mathf.Lerp(accelerationCurrent, Input.acceleration.magnitude, Time.deltaTime * filterCurrent);accelerationAverage = Mathf.Lerp(accelerationAverage, Input.acceleration.magnitude, Time.deltaTime * filterAverage);float delta = accelerationCurrent - accelerationAverage; // 获取差值,即坡度if (!isHigh){   if (delta > highLimit)//往高{isHigh = true;steps++;stepsText.text = "步数: " + steps+"\n跳跃数:"+jumpCount;}if(delta>vertHighLimit){isHigh = true;jumpCount++;stepsText.text = "步数: " + steps + "\n跳跃数:" + jumpCount;}}else{if (delta < lowLimit)//往低{isHigh = false;}}}private void checkWalkingAndJumping(){if ((steps != oldSteps)||(oldjumpCount != jumpCount)){startTimer = true;deltaTime = 0f;}if (startTimer)//计时器,让更新UI的慢一点,因为你不可能走路只用一帧的时间QAQ{deltaTime += Time.deltaTime;if (deltaTime != 0){if (oldjumpCount != jumpCount)//检测是否是跳跃isJumping = true;elseisWalking = true;}if (deltaTime > 2){deltaTime = 0F;startTimer = false;}}else if (!startTimer){isWalking = false;isJumping = false;}oldSteps = steps;oldjumpCount = jumpCount;}
}

Unity下计步器Pedometer算法的实现相关推荐

  1. 游戏中常用的寻路算法的分享(3):A*算法的实现

    概述 剥除代码,A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态 ...

  2. 关于寻路算法的一些思考(3):A*算法的实现

    概述 剥除代码,A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态 ...

  3. python边缘检测代码_python Canny边缘检测算法的实现

    图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...

  4. 干货回顾丨TensorFlow四种Cross Entropy算法的实现和应用

    交叉熵介绍 交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小,常见的Loss函数就是均方平方差(Mean Squared Er ...

  5. 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例

    53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...

  6. 简单分析Guava中RateLimiter中的令牌桶算法的实现

    为什么80%的码农都做不了架构师?>>>    令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法.典型情况下,令 ...

  7. Bug2算法的实现(RobotBASIC环境中仿真)

    移动机器人智能的一个重要标志就是自主导航,而实现机器人自主导航有个基本要求--避障.之前简单介绍过Bug避障算法,但仅仅了解大致理论而不亲自动手实现一遍很难有深刻的印象,只能说似懂非懂.我不是天才,不 ...

  8. 讨论帖:比特币中的SHA256算法的实现与标准的SHA256算法实现是否相同?

    近日阅读了比特币源码中与哈希相关的部分,对于其中一些细节还是有不清晰的地方. 于是我写了一个小的测试demo:sha256_test,代码下载 分别测试了三个版本对于SHA-256算法的实现: Bit ...

  9. 【分布式ID】理解Snowflake算法的实现原理

    1.概述 转载:冷饭新炒:理解Snowflake算法的实现原理 我上次也看了一个视频讲解:[分布式ID]键高并发 分布式 全局唯一 ID 雪花算法 snowflake 2.前提# Snowflake( ...

最新文章

  1. php 生成器 教程,PHP扩展生成器_PHP教程
  2. 参考: 40个轻量级 JavaScript 库
  3. 找到二叉树中符合搜索二叉树条件的最大拓扑结构
  4. 网上开店失败的7大原因
  5. Android Note - 内存优化
  6. 记一次 .NET 某HIS系统后端服务 内存泄漏分析
  7. vue请求数据完成后执行_生产库删除数据后怎样执行对应的undo sql来恢复数据?...
  8. word 分栏后转html,分栏怎么让两边一样 怎样让word文档分栏而顺序不变
  9. 加载项找不到java,未显示自定义Outlook加载项
  10. 深度学习入门——波士顿房价预测
  11. android 取出list第一页数据_Android传递ListObject的用法
  12. 2022牛客寒假算法基础集训营2 签到题7题
  13. 7-7 mmh学长的大数模板 (20分)
  14. 【智能算法第一期】Elman神经网络基本原理
  15. 图解三层交换机:局域网都用它来组网
  16. Python标准库(非常经典的各种模块介绍)
  17. Linux - 用户与组-useradd-userdel-usermod-passwd
  18. 当我们放弃时,我们想些什么
  19. Excel快捷键(字母+数字)大全
  20. flink部署-1.13

热门文章

  1. Python自动化办公:word文件操作教程
  2. Android查看手机位置,android-查找手机的位置
  3. 公众号快速涨粉方法汇总
  4. Aria2 下载工具(转)
  5. 苹果笔记本接移动硬盘怎么使用
  6. 【报告分享】2021中国住宿业市场网络口碑报告-中国饭店协会众荟(附下载)
  7. 传记-《硅谷钢铁侠》书中的精髓:从埃隆·马斯克的精神世界和人格特质里,找寻成功的秘密。
  8. 《C语言程序设计》江宝钏主编-习题1-6-解方程
  9. 模版方法模式--旅游签证
  10. 普林斯顿和宾大沃顿早申录取公布,常青藤精英教育一举拿下