還在擔心你的操做不行嗎?還在厭倦枯燥的操做麼?想不想像實戰同樣,手中握着槍與人對戰?
下面帶你實現你的夢想。
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/