/*******************************PC用Kinect玩水果忍者核心代码*******************************/private const double ArmXStretchedThreshold = 0.3;//手臂X轴方向伸展阀值,单位米private const double ArmZStretchedThreshold = 0.2;//手臂Z轴方向伸展阀值,单位米private bool isMouseLeftButtonDown = false;void kinect_SkeletonFrameReady(object sender,SkeletonFrameReadyEventArgs e){if(isWindowsClosing){return;}//获取距离Kinect距离最近的被骨骼跟踪的用户Skeleton s = GetClosetSkeleton(e);if(s == null){return;}if(s.TrackingState == SkeletonTrackingState.Tracked){var joints = s.Joints;Joint rightHand = Joints[JointType.HandRight];Joint leftHand = Joints[JointType.HandLeft];Joint head = Joints[JointType.Head];//根据Kinect距离判定是左手还是右手操作鼠标,兼容左右手var hand = (rightHand.Position.Z < leftHand.Position.Z ? rightHand : leftHand);//如果手没有伸出,则不做跟踪if(head.Position.Z - hand.Position.Z <= ArmZStretchedThreshold){return;}//模拟鼠标移动TrackHand2SimulateMouseMove(hand);bool isLeftHandStretched = ((head.Position.X-leftHand.Position.X)>=ArmXStretchedThreshold && (head.Position.Z-hand.Position.Z)<ArmZStretchedThreshold);bool isRightHandStretched = ((rightHand.Position.X-leftHand.Position.X)>=ArmXStretchedThreshold) && (head.Position.Z-hand.Position.Z)<ArmZStretchedThreshold);//无论左手或右手水平举起,模拟鼠标左键按下事件if(isLeftHandStretched || isRightHandStretched){MouseToolkit.mouse_event(MouseToolkit.MouseEventFlag.LeftDown,0,0,0,0);isMouseLeftButtonDown = true;}else if(isMouseLeftButtonDown){isMouseLeftButtonDown = false;MouseToolkit.mouse_event(MouseToolkit.MouseEventFlag.LeftUp,0,0,0,0);}}}private void TrackHand2SimulateMouseMove(Joint hand){if(hand.TrackingState != JointTrackingState.Tracked){return;}//获得屏幕高度和宽度int screenWidth = (int)SystemParameters.PrimaryScreenWidth;int screenHeight = (int)SystemParameters.PrimaryScreenHeight;//将骨骼坐标映射为屏幕坐标且手在有限范围内移动即可覆盖整个屏幕float posX = hand.ScaleTo(screenWidth,screenHeight,0.2f,0.2f).Position.X;float posY = hand.ScaleTo(screenWidth,screenHeight,0.2f,0.2f).Position.Y;Joint scaledCursorJoint = new Joint{TrackingState = JointTrackingState.Tracked;Position = new SkeletonPoint{X = posX;Y = posY;Z = hand.Position.Z;}};int x = Convert.ToInt32(scaledCursorJoint.Position.X);int y = Convert.ToInt32(scaledCursorJoint.Position.Y);int mouseX = Convert.ToInt32(x*65536/screenWidth);int mouseY = Convert.ToInt32(x*65536/screenHeight);MouseToolkit.mouse_event(MouseToolkit.MouseEventFlag.Absolute|MouseToolkit.MouseEventFlag.Move,mouseX,mouseY,0,0);}

PC用Kinect玩水果忍者核心代码相关推荐

  1. Kinect开发教程四:用Kinect控制鼠标玩水果忍者PC版

    最近Kinect连接Xbox玩水果忍者的视频非常红火,可惜小斤只有本本和Kinect,没法玩Xbox上的体感游戏.幸运的是,寻寻觅觅后,小斤发现水果忍者有PC版本,既然上一个教程我们已经可以让Kine ...

  2. Kinect SDK 正式版(二)骨骼追踪,实现PC版体感水果忍者

    这篇来介绍一下几个正式版SDK提供的新特性,还有比较被主流应用的骨骼数据操作. 首先先介绍一个新特性,Kinect角度调整,继续上篇的项目工程,在界面上添加两个控件,一个下拉列表,一个按钮. < ...

  3. 玩水果忍者未能找到服务器,水果忍者无法连接服务器是什么原因

    水果忍者这款游戏相信大家都不陌生吧,最近小编经常收到水果忍者无法连接服务器是什么原因问题的反馈,接下来小编就为大家提供几种常见的处理方案. 水果忍者游戏简介 <水果忍者® - 爽快切水果> ...

  4. 利用WxJava实现PC网站集成微信登录功能,核心代码竟然不超过10行

    最近网站PC端集成微信扫码登录,踩了不少坑,在此记录下实现过程和注意事项. 本文目录 一.微信开放平台操作步骤1.创建"网站应用"2.获取AppID和AppSecret二.开发指南 ...

  5. 用眼神玩水果忍者 NUIA打造PC端眼控技术

    MWC2013的展会现场,一台标记了Tobii眼球追踪传感器标志的笔记本电脑吸引了不少参会者的眼球.明眼人一看就知道这又将是一场手动控制和眼控技术的革命.从CES 2012开始,Tobii眼球追踪传感 ...

  6. 通过kinectosc玩PC版水果忍者

    完全参照vinjin老师的思路, 详见http://code.google.com/p/processing-cn/wiki/KinectOsc_readme 只因本人没用过python,费了好多力气 ...

  7. 用【Python】写了一个水果忍者小游戏,玩过之后爱不释手

    前言 水果忍者到家都玩过吧,但是Python写的水果忍者你肯定没有玩过.今天就给你表演一个新的,用Python写一个水果忍者. 水果忍者的玩法很简单,尽可能的切开抛出的水果就行. 今天就用python ...

  8. html 水果忍者 教程,新手手册:《水果忍者》游戏设定详解

    您可能感兴趣的话题: 水果忍者 核心提示:Halfbrick Studios制作.<水果忍者Fruit Ninja>是一款简单的休闲游戏,目的只有一个--砍水果! Zen:图标为苹果的Ze ...

  9. 用haXe+NME实现水果忍者的刀光效果,支持多点触摸,Flash10, Android通用

    前两天玩了玩水果忍者,感觉这种输入方式是非常适合多点触摸屏的,输入直观而且爽快感十足,于是就想到了如何使用haxe+NME实现刀光的效果,今天按照我的想法把效果实现了,感觉还是很逼真的.估计即使不是水 ...

最新文章

  1. border-raduis 在IE8中的兼容性问题
  2. MSSQL SERVER 2005 数学函数
  3. 浅谈各种数据库连接池
  4. extjs获取元素name属性值_【ExtJS】各种获取元素组件方法
  5. c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘
  6. Zookeeper系列四:Zookeeper实现分布式锁、Zookeeper实现配置中心
  7. Android开发群
  8. 调用jad生成器生成相应的.jad文件
  9. 【数据维护】Windows文件保护机制(SFC)
  10. mysql 联合主键 null_MySQL联合主键的索引使用
  11. 新概念二册 Lesson 12 Goodbye and good luck再见,一路顺风 (一般将来时)
  12. Java毕设项目——智能仓储系统(java+SSM+Maven+Mysql+Jsp)
  13. 格式工厂怎么将qlv转换成mp4 转换方法最新
  14. adb模拟按键home_adb 命令模拟按键事件 模拟 点击 事件
  15. GEE:LST地表温度反演函数(针对Landsat8的T1影像和T1_L2影像集合)
  16. 七彩虹计算机主板维修,七彩虹C .H61U v28主板维修一例
  17. Go语言如何自定义linter(静态检查工具)
  18. 2022 CSP-J 复赛题解
  19. 专接本计算机专业课难吗,河北计算机专业专接本难吗
  20. 经常说的IPv6是个啥,比IPv4好在哪儿?

热门文章

  1. Hbase Shell命令介绍
  2. TensorFlow官网教程Convolutional Neural Networks 难点详解
  3. 五一,给心情放个假-酷狗电台桌面版
  4. Go语言教程第十二集 操作mysql和redis
  5. 连尚电商 PHP,OpenCart 3.6 中文专业版 - PHP 开源电商系统
  6. 【Java速成教学】桌球游戏项目_教你用最短的时间开发桌球小游戏_Java初学者项目
  7. 构建WhatsApp私域流量池,跨境卖家低成本卖爆全球
  8. 【日常学习】【数学/哈希】康托展开
  9. 大数据处理算法一:BitMap算法
  10. 百思买Best Buy Drop Ship EDI SaaS 解决方案——LIP操作详解