还在担心你的操做不行吗?还在厌倦枯燥的操做么?想不想像实战同样,手中握着枪与人对战?
下面带你实现你的梦想。git
说到加强游戏体感,拿着实体枪去战斗,第一想到的就是任天堂的zapper了,可是他的价格与游戏设定,Emm…
想要实现体感控制,做为一名爱好者,固然是DIY,首先咱们须要陀螺仪来感应操控的动做 ,而后就须要一个驱动器来帮助咱们处理信号并传给游戏主机,在这里我选择的开发板是Arduino Pro Micro和陀螺仪ADXL345,固然从某宝上买回来得本身焊下引脚。app
当硬件准备好了以后就是怎么接线了ui
下面就是程序控制了,先预装好Arduino IDE,首先要引用两个类spa
#include <mouseWheel.h> #include <mousePress.h>
读取ADXL345的XY值.net
y345 = -WireRead2( ADXAddressR, DATAX0,DATAX1); x345 = WireRead2( ADXAddressR, DATAY0,DATAY1); if(x345<0) x345*=1.5; if(y345>0) y345*=1.5; speedoX = constrain(pow(abs(x345),2)/100,0,12700); speedoY = constrain(pow(abs(y345),2)/100,0,12700); speedo();
判断上下左右code
if( x345 > value345X ){ x = -speedoxVal; }else if( x345 < -value345X ){ x = speedoxVal; }else x = 0; if( y345 > value345Y ){ y = -speedoyPos; }else if( y345 < -value345Y ){ y = speedoyPos; }else y = 0;
左键右键连击blog
myMouseLeft.press_mouse(); myMouseRight.press_mouse(); wheel = mywheel.read_wheel(); if( millis() - clickTime > clickSpeedo ){ if(!digitalRead(CLICK)) Mouse.click(); clickTime = millis(); }
PWM控制鼠标速度token
if( (micros() - ctrlMouseTimeX >= PWMSTOPX*80)//“停” && valuePWMX == true){ ctrlMouseTimeX = micros(); valuePWMX = !valuePWMX; xVal = x; }else if ( (micros() - ctrlMouseTimeX >= PWMGOX *80)//“走” && valuePWMX == false ){ ctrlMouseTimeX = micros(); valuePWMX = !valuePWMX; xVal = 0; } if( (micros() - ctrlMouseTimeY >= PWMSTOPY*80) //“停” && valuePWMY == true){ ctrlMouseTimeY = micros(); valuePWMY = !valuePWMY; yPos = y; }else if ( (micros() - ctrlMouseTimeY >= PWMGOY *80)//“走” && valuePWMY == false ){ ctrlMouseTimeY = micros(); valuePWMY = !valuePWMY; yPos = 0; }
鼠标移动游戏
Mouse.move( xVal ,yPos ,wheel );
想要源码的同窗点 这里下源码(赚点积分)图片
参考资料:
植物大战僵尸破解版: http://www.pvzbaike.com/archives/pvz_pojie/