Мазмуну:
- Жабдуулар
- 1 -кадам: айланып секирүү
- 2 -кадам: Пластинкаларды туташтыруу
- 3 -кадам: Жарыкты өчүрүү фантастикалык
- 4 -кадам: Кодду баштоо
- 5 -кадам: Оюнду адаптациялоо
- 6 -кадам: Player секирүү кодун өзгөртүү
- 7 -кадам: Чыгууну өзгөртүү
- 8 -кадам: Бул иштейт
- 9 -кадам: Бөлмөнү даярдоо
- 10 -кадам: Бул толук
Video: Физикалык оюн контроллерин түзүү: 10 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Nintendo Wii ишке киргизилгенде, оюнчуларга диванды таштап, тандоо оюнунда упай топтоо үчүн секирүү, бийлөө жана чайкоо талап кылынган. Wii үчүн куруунун кыйшык сызыгы бар болсо да, оюнду көзөмөлдөөгө мүмкүндүк берген, ыңгайлаштырылган түзмөктү куруу оңой учурда, басымдын үстүнө физикалык түрдө секирүү аркылуу.
Бул көрсөтмө менин "Space Bounce" оюнун (https://marquisdegeek.com/spacebounce/ дареги боюнча https://github.com/MarquisdeGeek/SpaceBounce) физикалык контроллерди колдонууга кантип ылайыкташтыргандыгымды көрсөтөт.
Жабдуулар
- Arduino
- Эки басымдуу төшөк (меники Маплинден болгон
- Эки резистор, басым төшөгү үчүн (100 К, бирок көбү жакшы)
- Эки LED (милдеттүү эмес)
- Светодиоддор үчүн эки резистор (100 К, бирок көбү жакшы. Ошондой эле милдеттүү эмес)
- Ноутбук
1 -кадам: айланып секирүү
Мен секирүүчү интерфейсти долбоорлоо менен баштадым жана оюнду карап чыккандан кийин, эки төшөктүн болушу анын негизги идеясын эң жакшы билдирерин түшүндүм. Башкача айтканда, сиз сол дубалда кармоо сезимин окшоштуруу үчүн сол матта турасыз жана керектүү учурда оң төшөккө секирип өтөсүз, жана сиздин экрандын каарманы дагы ошондой кылмак.
2 -кадам: Пластинкаларды туташтыруу
Ошентип, мен эки төшөк сатып алып, иштөөгө туура келди. Бул жерде көрсөтүлгөн басым төшөктөрү мен тапкан эң жөнөкөй (жана эң арзан!), Ар бири 10 фунт. Аларда төрт зым бар, алардын экөөсү жөнөкөй өчүргүч сыяктуу иштейт: төшөктө турганыңызда, байланыш түзүлөт, ал эми секиргенде үзүлөт. Мен муну Arduinoго ушул негизги схема менен бердим.
3 -кадам: Жарыкты өчүрүү фантастикалык
Бул иштеди, бирок абдан шыктандыруучу болгон жок. Ошентип, мен ар бир басым килемчесинин абалын көрсөтүү үчүн бир нече LED коштум.
Жарык диоддору оюнду ойнотуу үчүн талап кылынбайт, бирок аларды схемага кошуу менен мен учурдагы абал кандай болгонун оңой эле көрө алдым. Ошондуктан, эгер оюн туура реакция кылбаса, анда көйгөй схемада, Arduino программасында же оюндун логикасында болсо, мен иштеп чыкмакмын.
4 -кадам: Кодду баштоо
Түпнуска оюн JavaScriptте болгонун эске алып, мен NodeJS программасын жазууну чечтим, ал басымдын абалынын өзгөрүшүн угат жана маалыматты веб -сокеттер аркылуу оюн кардарына жөнөтөт.
Биринчиден, стандарттык фирманы Arduinoго орнотуңуз, ошондо биз Node серверин иштете алабыз жана Johnny Five китепканасын колдонуп, Arduinoдон абалдын өзгөрүшүн угушат. Андан кийин оюндун мазмунун тейлөө үчүн Express кошуңуз.
Бүт сервер коду мындай көрүнөт:
const express = талап кылуу ('экспресс');
const app = express (); const http = талап кылуу ('http'); const server = http.createServer (колдонмо); const io = талап кылуу ('socket.io'). угуу (сервер); const arduino = талап кылуу ('arduino-контроллер'); server.listen (3000, function () {console.log ('Экспресс сервер угуу…');}); app.use ('/', express.static ('колдонмо')); const five = талап кылуу ("johnny-five"); const board = new five. Board ({repl: false}); board.on ("даяр", функциясы () {жашыл болсун = жаңы беш. LED (5); кызыл болсун = жаңы беш. Лед (6); солго болсун = жаңы беш. Пин (2); оңго болсун = жаңы беш. Pin (3); io.on ('туташуу', функция (розетка) {console.log ('Биз туташтык!'); LastLeft = false; letRight = false; err, val) => {if (val) {green.on ();} else {green.off ();} if (val! == lastLeft) {lastLeft = val; let state = {side: 'left', штат: вал? 'төмөн': 'өйдө'} socket.emit ('arduino:: абал', JSON.stringify (абал), {үчүн: 'бардыгы'});}}) беш. Pin.read (оңдо), (Err, val) => {if (val) {red.on ();} else {red.off ();} // if (val! == lastRight) {lastRight = val; let state = {side: 'оң', абал: val? 'төмөн': 'өйдө'} socket.emit ('arduino:: state', JSON.stringify (state), {for: 'every'});}})}); });
Жана иштетилет:
түйүн server.js
5 -кадам: Оюнду адаптациялоо
Биринчи көйгөй интерфейс болгон; кантип секирүү керек болгондо ойнотуу баскычын кантип "басасыз"? Мен муну башка бардык баскычтарды жок кылуу менен чечтим! Мен оюнчу секирген сайын калган баскычты иштете алам, же "жогору" окуяны угуу менен.
розетка = io (); socket.on ('arduino:: state', function (msg) {let data = JSON.parse (msg); if (data.state === 'up') {// биз секирип жатабыз!}});
Бул жерден мен оюнга кире алдым, жана оюнчуктарды дагы кызыктуу нерсеге колдоно алдым - оюндун өзү.
6 -кадам: Player секирүү кодун өзгөртүү
Бул жолу мен ар бир төшөк менен жекече иштешим керек жана оюнчунун буту төшөктөн чыкканда мүнөзү секире баштайт. Экранда каармандын мина шахтасынан өтүү убактысы оюнчунун бир жактан капталга секирүү убактысынан узагыраак. Бул жакшы нерсе, анткени ал оюнчуга тең салмактуулугун калыбына келтирүүгө, бутун текшерүүгө жана оюнчунун экранда секирип бүтүшүн көрүүгө мүмкүнчүлүк берет. Эгер андай болбогондо, мен оюнчуну жайлатып коймокмун.
розетка = io ();
socket.on ('arduino:: абал', функция (msg) {
маалымат болсун = JSON.parse (msg); if (data.side === 'left' && data.state === 'up') {// биз сол жактан секирип жатабыз}});
7 -кадам: Чыгууну өзгөртүү
Киргизүү механизми иштеп жатканда, мен чыгуунун үстүндө иштешим керек болчу. Оюн планшетте же телефондо жакшы ойнойт, анткени ал экранды толтурат. Бирок, сиз секирип баратканыңызда, аны көрүү үчүн өтө кичине, андыктан экранда ойноо аянтын чоңойтуу керек. Көп!
Тилекке каршы, бардык графикалык активдерди кеңейтүү абдан көп убакытты талап кылган иш. Ошентип, мен алдадым! Оюнга чычкандын X, Y позициясын же тийүү окуясын түшүнүүнүн кажети жок болгондуктан, мен бүт кенептин масштабын кайра карап чыгам!
Бул CSS менен JavaScriptти бузууга алып келди, андыктан HTML5 кенеп объектиси толук экранда иштейт.
Мындан тышкары, оюн портрет режиминде ойнолот, бул биз кенепти 90 градуска буруш үчүн керек болгон кыймылсыз мүлктү максималдуу түрдө колдонууну билдирет.
#SGXCanvas {
позиция: абсолюттук; z-index: 0; айландыруу: айлантуу (-90deg); трансформация келип чыгышы: жогорку оң; туурасы: авто; }
8 -кадам: Бул иштейт
Биринчи оюнумда ноутбугумду жантайып, минтип ойнодум.
9 -кадам: Бөлмөнү даярдоо
Физикалык контроллерди куруу - бул сапардын башталышы гана, аягы эмес. Калган физикалык мейкиндикти эске алуу керек.
Биринчиден, басымдык төшөктөр сиз жерге түшкөндө полго айланды. Бул оңой эле эки тараптуу жабышчаак жаздыктар менен оңдолду. Алар жакшы иштешет, бирок, балким, бир топ эскирүүнү көтөрө алышпайт.
Андан кийин, ноутбук бир аз келесоо көрүнөт, бул сизди оюндун өзүнө алаксытат. Ошентип, эс алуу бөлмөсүндөгү сыналгыны "карызга" алып, жергиликтүү MakerSpaceке алып барышты, ал дубалга орнотулуп, туташтырылды.
Келечекте оюнчуну жетектөө үчүн кысымдык төшөктөргө (балким, Нил Армстронгдун биринчи айынын басылышы!) Издин изин кошуу жакшы болмок. Ошондой эле телевизор үчүн жакшыраак корпус жана курчоо сезимге кошумча болмок. Балким, убактыңыз жана мейкиндигиңиз барлар, шахтанын шахтасынан кулап түшкөн кластрофобдук сезимди тууроо үчүн, килемчелердин эки капталына жайгаштырылган, кагаздан жасалган маше рок бетин жасай алышкандыр!
10 -кадам: Бул толук
Жана ал жерде сизде бар. Оригиналдуу оюнду жакшырткан жана аны ойноп жатканда формаңызды сактаган жеңил күндүк долбоор!
Бул иштин айрымдарын азайтуу үчүн, түпнуска оюнда колдонулган баскычтарды түздөн -түз окшоштуруучу Makey Makeyди колдонсоңуз болот. Бирок бул окурман үчүн көнүгүү катары калды:)
Бардык коддор Space Bounce репонун атайын бөлүмүндө:
Сунушталууда:
Дээрлик бардык оюн контроллерин кантип тазалоо керек: 5 кадам
Дээрлик бардык оюн контроллерин кантип тазалоо керек: Мен жакында Logitech Dual Action контроллерлерин колдоном, аларды жакында Raspberry Pi эмулятору үчүн жүктөп берем. бир жылдан ашык), баскычтардын көбү
Zoom жолугушуулары физикалык үнсүз баскычы: 7 кадам (сүрөттөр менен)
Чоңойтуу жолугушуулары Физикалык үнсүз баскычы: Эгерде сиз жумушта же мектепте масштабдуу жолугушууларды колдонсоңуз, бул баскыч сиз үчүн! Үнүңүздү которуштуруу үчүн баскычты басыңыз же жолугушууну калтыруу үчүн баскычты басып туруңуз (же эгер сиз алпаруучу болсоңуз, аны токтотуңуз.) Мунун эң сонун жери, бул сиздин Zoom windo болсо дагы иштейт
Альтернативдүү MIDI контроллерин түзүү Макей-Макейди жана Сууну колдонуу: 6 кадам
Альтернативдүү MIDI контроллерин түзүү Makey-Makey жана Water'ди колдонуу: Макей-Макейди колдонуучунун жеке жана чыгармачыл киргизүү үчүн колдонуу өтө оңой! Аппаратты колдонгон көптөгөн адамдар үндөрдү же ноталарды чыгаруу үчүн Макей-Макейдеги киргизүүлөрдү колдонуу менен өздөрүнүн инструментин түзүшсө, биз андан да көптү кыла алабыз деп чечтик
Arduino негизделген DIY оюн контролери - Arduino PS2 оюн контроллери - DIY Arduino Gamepad менен Tekken ойноо: 7 кадам
Arduino негизделген DIY оюн контролери | Arduino PS2 оюн контроллери | DIY Arduino Gamepad менен Tekken ойноо: Саламатсыздарбы балдар, оюндарды ойноо ар дайым кызыктуу, бирок өзүңүздүн DIY колдонмо оюнуңузду башкаруучу менен ойноо алда канча кызыктуу. Ошентип, биз бул инструкцияларда arduino pro micro колдонуп оюн контроллерин жасайбыз
Башт 2 (физикалык терапия) роботтук түзмөк: 7 кадам (сүрөттөр менен)
Башт 2 (Физикалык терапия) Роботтук түзмөк: Резюме: Башт 2нин максаты - колунан ичке жана сыртка тартып кырсыктан жабыркаган бейтаптын билегин кыймылдатуу. Башында, Gen 2 AT & T 2017 Developer Summit конкурсу үчүн түзүлгөн, андан кийин мен чечтим