Lokala grupper, handkontroller och telefonkontroller i PlayDrop-spel
Läs fysiska handkontroller och PlayDrops telefonkontroller via sdk.device, följ lokala spelarplatser och deklarera handkontrollsstöd och gruppstorlekar.
En lokal grupp är flera personer som spelar på en skärm, var och en med en handkontroll: en fysisk handkontroll eller en telefon som PlayDrop gör till en handkontroll när man skannar en kod. Ditt spel läser alla handkontroller på samma sätt via SDK:t, på webbplatsen och i apparna.
Deklarera handkontroller och gruppstorlekar
{
"types": ["solo", "party"],
"party": { "local": [1, 2, 3, 4] },
"controller": { "support": "optional", "type": "simpler" }
}controller.supportäroff,optionalellerrequired. Deklarera det i varje spel, ävenoff.controller.typeanger de minsta kontroller som spelet behöver:any(riktningar, Bekräfta och Avbryt),simpler(en spak, fyra frontknappar och Menu; telefonkontroller räcker) ellerstandard(styrkors, två klickbara spakar, fyra frontknappar, två axelknappar, två avtryckare och Menu).party.localanger de exakta spelarantalen på en skärm;1kräver typensolo. När stöd för handkontroller är på måste varje angivet antal gå att spela med handkontroller.
Läs handkontroller
await sdk.device.enableControllerInput().catch(() => { /* keep keyboard and touch */ });
const stop = sdk.device.onButton(({ playerIndex, button, pressed }) => {
if (button === "south" && pressed) jump(playerIndex);
});
function update() {
for (const slot of sdk.device.localPlayers) {
const pad = sdk.device.gamepad(slot.playerIndex);
if (pad?.connected) move(slot.playerIndex, pad.axes[0], pad.axes[1]);
}
requestAnimationFrame(update);
}
update();- Anropa
enableControllerInput()en gång efterinit(). Anropet avvisas medcontroller_input_unavailableellercontroller_input_timeoutnär värden inte kan ge inmatning; spelet fortsätter köra. gamepad(playerIndex)returnerar en ögonblicksbild i webbläsarens standardlayout:axes(vänster x/y, höger x/y från -1 till 1), sjuttonbuttons,source(physicalellervirtual) ochid.playerIndex0 är spelare 1.- Knappar har positionsnamn som
southocheast.pad.label("south")ger texten att visa: ”A”, ”Cross” eller ”B” beroende på handkontrollen.pad.has("dpad")visar om en kontroll finns. - Menu och Home tillhör PlayDrop och läses alltid som släppta.
- Anropa aldrig
navigator.getGamepads(): telefonkontroller når bara spel via SDK:t, och PlayDrop loggar en varning.
Lokala spelarplatser
sdk.device.localPlayers listar platserna som spelarna valde, { playerIndex, gamepadKey }, och onLocalPlayersChange(callback) rapporterar ändringar. En frånkopplad handkontroll behåller sin plats. När spelarlistan ändras eller blir tom går du tillbaka till en rimlig meny i stället för att krascha. En ensam handkontroll är vanlig inmatning, inte en grupp.
Från en knapp öppnar sdk.social.openParty({ mode: "local" }) PlayDrops parkopplingsfönster med telefonens QR-kod och anslutna handkontroller. Erbjud bara de lägen du har deklarerat.
Lokalt eller online, inte båda
Värden startar ett spel antingen som en lokal grupp eller som en onlinegrupp, aldrig båda: lokala spelare kan inte gå med i onlinerum. För onlinespel med vänner, se onlinegrupper och röst.
Designa för soffan
Visa varje spelares färg och knapptext, låt vem som helst trycka på en knapp för att gå med och håll HUD:en läsbar från en soffa. Behåll touch- och tangentbordskontroller för solospel.