InputObject

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile

Un InputObject rappresenta un singolo input dell'utente, come il movimento del mouse, i tocchi, la pressione delle chiavi e altro ancora. Viene creato quando un input inizia.

Le proprietà di questo oggetto variano a seconda del UserInputType.Ogni tipo di input subirà vari cambiamenti al suo UserInputState .Durante la vita di un input, altre proprietà che descrivono ulteriormente l'input possono cambiare, come Position e Delta .I pulsanti della tastiera e del gamepad avranno la proprietà KeyCode Impostare.

Una volta creato all'inizio di un input, lo stesso oggetto persiste e viene aggiornato fino alla fine dell'input.Come Risultato, puoi monitorare i cambiamenti dell'oggetto utilizzando l'evento Changed quando l'utente modifica l'input in questione.Puoi anche posizionare questi oggetti in una lista di input attivi e interagire con l'oggetto dopo la sua creazione da parte di un evento come UserInputService.InputBegan .Questo è principalmente utile per gli eventi di tocco, poiché ogni punto di tocco avrà un InputObject separato.

Vedi anche:

  • ContextActionService , che passa un InputObject a bound funzioni di gestione delle azioni
  • UserInputService , i cui eventi e funzioni spesso utilizzano InputObject
  • GuiObject , i cui eventi relativi all'uso dell'input dell'utente utilizzano InputObject

Campioni di codice

L'esempio seguente mostra uno dei molti esempi di utilizzo del trattamento dell'input dell'utente da InputBegan a seconda del suo tipo.

Trattamento dell'input Iniziato

-- Per utilizzare l'evento InputBegan, il servizio UserInputService deve essere utilizzato
local UserInputService = game:GetService("UserInputService")
-- Una funzione di esempio che fornisce diversi casi d'uso per vari tipi di input dell'utente
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
if gameProcessed then
print("The game engine internally observed this input!")
else
print("The game engine did not internally observe this input!")
end
end)

Sommario

Proprietà

Proprietà

Delta

Lettura Parallela

A Vector3 descrivendo il Delta (cambio) tra i movimenti del mouse/joystick.

Questo è utile quando viene utilizzato con l'input di position per tracciare la posizione e il movimento del mouse/joystick dell'utente, come quando crei script di movimento personalizzati o della fotocamera.Considera il monitoraggio dei cambiamenti dell'oggetto di input utilizzando l'evento Object.Changed o quando l'utente modifica l'input attraverso eventi come UserInputService.InputChanged e GuiObject.InputChanged .

Nota che un InputObject corrispondente a Enum.UserInputType.MouseButton1 (clic sinistro) e Enum.UserInputType.MouseButton2 (clic destro) fornito da un InputBegan callback non avrà il suo Delta o Position aggiornato una volta creato, tranne quando l'input del mouse termina.Per ottenere deltas aggiornati per gli input del mouse, devi invece fare riferimento a un InputObject da un InputChanged Richiama, o chiamare GetMouseDelta() .Tuttavia, qualsiasi InputObjects corrispondente agli input di tocco avrà il loro delta e la posizione aggiornati ogni frame durante tutta la loro vita.

Vedi anche:

Campioni di codice

Questo esempio crea uno script binocolare che diminuisce il mouse clic del giocatore FieldOfView() e MouseDeltaSensitivity() quando un giocatore con un MouseEnabled() ha lasciato i mouse clic.Lo script indica anche la posizione del mondo del mouse del giocatore Camera verso la posizione Vector3 del mouse clic.

Quando il giocatore lascia di nuovo i clic del mouse, la fotocamera del giocatore torna alla normalità con lo stesso campo visivo e come prima che il giocatore si sia zoomato con lo script.

Mentre il giocatore usa il binocolo, lo script blocca il mouse del giocatore al centro dello schermo impostando il giocatore di MouseBehavior() a BloccaCentro.La fotocamera del giocatore si muove quando il giocatore muove il mouse secondo la proprietà indicando il cambio della posizione dello schermo del mouse.

Perché questo esempio funzioni come previsto, deve essere posizionato in un LocalScript .

Crea uno script binocolare

local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head", false)
local mouse = player:GetMouse()
local zoomed = false
local camera = game.Workspace.CurrentCamera
local target = nil
local originalProperties = {
FieldOfView = nil,
_CFrame = nil,
MouseBehavior = nil,
MouseDeltaSensitivity = nil,
}
local AngleX, TargetAngleX = 0, 0
local AngleY, TargetAngleY = 0, 0
-- Ripristina la fotocamera prima di CFrame e FieldOfView prima dello zoom
local function ResetCamera()
target = nil
camera.CameraType = Enum.CameraType.Custom
camera.CFrame = originalProperties._CFrame
camera.FieldOfView = originalProperties.FieldOfView
UserInputService.MouseBehavior = originalProperties.MouseBehavior
UserInputService.MouseDeltaSensitivity = originalProperties.MouseDeltaSensitivity
end
local function ZoomCamera()
-- Permetti alla fotocamera di essere cambiata da uno script
camera.CameraType = Enum.CameraType.Scriptable
-- Memorizza le proprietà della fotocamera prima dello zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Zoom della fotocamera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Blocca e rallenta il mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Ripristina gli angoli di zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Attiva/disattiva lo zoom della fotocamera/unzoom
local function MouseClick()
if zoomed then
-- Dismettere la fotocamera
ResetCamera()
else
-- Zoom in fotocamera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualcosa di più alto renderebbe più difficile cercare su e giù; raccomanda qualsiasi cosa tra 0~1
local smoothness = 0.05 -- consigliare qualsiasi cosa tra 0~1
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end
Lettura Parallela

Contiene un Enum.KeyCode enum che descrive quale tipo di input è stato utilizzato.Per i tipi di input come la tastiera, questo descrive quale tasto è stato premuto.Per gli input come il Topo, or mouse as computer mouse, questo non fornisce informazioni aggiuntive.

Enumi


<th>Valore</th>
<th>Descrizione</th>
</tr>
</thead>
<tr>
<td>
<b>Sconosciuto</b>
</td>
<td>0</td>
<td />
</tr>
<tr>
<td>
<b>Indietro</b>
</td>
<td>8</td>
<td />
</tr>
<tr>
<td>
<b>Scheda</b>
</td>
<td>9</td>
<td />
</tr>
<tr>
<td>
<b>Svuota</b>
</td>
<td>12</td>
<td />
</tr>
<tr>
<td>
<b>Restituzione</b>
</td>
<td>13</td>
<td />
</tr>
<tr>
<td>
<b>Pausa</b>
</td>
<td>19</td>
<td />
</tr>
<tr>
<td>
<b>Fuggi</b>
</td>
<td>27</td>
<td />
</tr>
<tr>
<td>
<b>Spazio</b>
</td>
<td>32</td>
<td />
</tr>
<tr>
<td>
<b>Doppio Citato</b>
</td>
<td>34</td>
<td />
</tr>
<tr>
<td>
<b>Hash</b>
</td>
<td>35</td>
<td />
</tr>
<tr>
<td>
<b>Dollaro</b>
</td>
<td>36</td>
<td />
</tr>
<tr>
<td>
<b>Percentuale</b>
</td>
<td>37</td>
<td />
</tr>
<tr>
<td>
<b>Ampersand</b>
</td>
<td>38</td>
<td />
</tr>
<tr>
<td>
<b>Citazione</b>
</td>
<td>39</td>
<td />
</tr>
<tr>
<td>
<b>Parentesi sinistra</b>
</td>
<td>40</td>
<td />
</tr>
<tr>
<td>
<b>Parentesi destra</b>
</td>
<td>41</td>
<td />
</tr>
<tr>
<td>
<b>Asterisco</b>
</td>
<td>42</td>
<td />
</tr>
<tr>
<td>
<b>Più</b>
</td>
<td>43</td>
<td />
</tr>
<tr>
<td>
<b>Comma</b>
</td>
<td>44</td>
<td />
</tr>
<tr>
<td>
<b>Meno</b>
</td>
<td>45</td>
<td />
</tr>
<tr>
<td>
<b>Periodo</b>
</td>
<td>46</td>
<td />
</tr>
<tr>
<td>
<b>Taglio</b>
</td>
<td>47</td>
<td />
</tr>
<tr>
<td>
<b>Zero</b>
</td>
<td>48</td>
<td />
</tr>
<tr>
<td>
<b>Uno</b>
</td>
<td>49</td>
<td />
</tr>
<tr>
<td>
<b>Due</b>
</td>
<td>50</td>
<td />
</tr>
<tr>
<td>
<b>Tre</b>
</td>
<td>51</td>
<td />
</tr>
<tr>
<td>
<b>Quattro</b>
</td>
<td>52</td>
<td />
</tr>
<tr>
<td>
<b>Cinque</b>
</td>
<td>53</td>
<td />
</tr>
<tr>
<td>
<b>Sei</b>
</td>
<td>54</td>
<td />
</tr>
<tr>
<td>
<b>Sette</b>
</td>
<td>55</td>
<td />
</tr>
<tr>
<td>
<b>Ottavo</b>
</td>
<td>56</td>
<td />
</tr>
<tr>
<td>
<b>Nove</b>
</td>
<td>57</td>
<td />
</tr>
<tr>
<td>
<b>Colon</b>
</td>
<td>58</td>
<td />
</tr>
<tr>
<td>
<b>Semicolon</b>
</td>
<td>59</td>
<td />
</tr>
<tr>
<td>
<b>Meno di</b>
</td>
<td>60</td>
<td />
</tr>
<tr>
<td>
<b>Equivale</b>
</td>
<td>61</td>
<td />
</tr>
<tr>
<td>
<b>Maggiore di</b>
</td>
<td>62</td>
<td />
</tr>
<tr>
<td>
<b>Domanda</b>
</td>
<td>63</td>
<td />
</tr>
<tr>
<td>
<b>At</b>
</td>
<td>64</td>
<td />
</tr>
<tr>
<td>
<b>Braccio sinistro</b>
</td>
<td>91</td>
<td />
</tr>
<tr>
<td>
<b>Colpo di ritorno</b>
</td>
<td>92</td>
<td />
</tr>
<tr>
<td>
<b>Braccio destro</b>
</td>
<td>93</td>
<td />
</tr>
<tr>
<td>
<b>Cura</b>
</td>
<td>94</td>
<td />
</tr>
<tr>
<td>
<b>Sottolineatura</b>
</td>
<td>95</td>
<td />
</tr>
<tr>
<td>
<b>Citazione</b>
</td>
<td>96</td>
<td />
</tr>
<tr>
<td>
<b>A</b>
</td>
<td>97</td>
<td />
</tr>
<tr>
<td>
<b>B</b>
</td>
<td>98</td>
<td />
</tr>
<tr>
<td>
<b>C</b>
</td>
<td>99</td>
<td />
</tr>
<tr>
<td>
<b>D</b>
</td>
<td>100</td>
<td />
</tr>
<tr>
<td>
<b>E</b>
</td>
<td>101</td>
<td />
</tr>
<tr>
<td>
<b>F</b>
</td>
<td>102</td>
<td />
</tr>
<tr>
<td>
<b>G</b>
</td>
<td>103</td>
<td />
</tr>
<tr>
<td>
<b>H</b>
</td>
<td>104</td>
<td />
</tr>
<tr>
<td>
<b>I</b>
</td>
<td>105</td>
<td />
</tr>
<tr>
<td>
<b>J</b>
</td>
<td>106</td>
<td />
</tr>
<tr>
<td>
<b>K</b>
</td>
<td>107</td>
<td />
</tr>
<tr>
<td>
<b>L</b>
</td>
<td>108</td>
<td />
</tr>
<tr>
<td>
<b>M</b>
</td>
<td>109</td>
<td />
</tr>
<tr>
<td>
<b>N</b>
</td>
<td>110</td>
<td />
</tr>
<tr>
<td>
<b>O</b>
</td>
<td>111</td>
<td />
</tr>
<tr>
<td>
<b>P</b>
</td>
<td>112</td>
<td />
</tr>
<tr>
<td>
<b>Q</b>
</td>
<td>113</td>
<td />
</tr>
<tr>
<td>
<b>R</b>
</td>
<td>114</td>
<td />
</tr>
<tr>
<td>
<b>S</b>
</td>
<td>115</td>
<td />
</tr>
<tr>
<td>
<b>T</b>
</td>
<td>116</td>
<td />
</tr>
<tr>
<td>
<b>U</b>
</td>
<td>117</td>
<td />
</tr>
<tr>
<td>
<b>V</b>
</td>
<td>118</td>
<td />
</tr>
<tr>
<td>
<b>W</b>
</td>
<td>119</td>
<td />
</tr>
<tr>
<td>
<b>X</b>
</td>
<td>120</td>
<td />
</tr>
<tr>
<td>
<b>Y</b>
</td>
<td>121</td>
<td />
</tr>
<tr>
<td>
<b>Z</b>
</td>
<td>122</td>
<td />
</tr>
<tr>
<td>
<b>Curly Sinistra</b>
</td>
<td>123</td>
<td />
</tr>
<tr>
<td>
<b>Tubo</b>
</td>
<td>124</td>
<td />
</tr>
<tr>
<td>
<b>RightCurly</b>
</td>
<td>125</td>
<td />
</tr>
<tr>
<td>
<b>Tilde</b>
</td>
<td>126</td>
<td />
</tr>
<tr>
<td>
<b>Elimina</b>
</td>
<td>127</td>
<td />
</tr>
<tr>
<td>
<b>TastieraZero</b>
</td>
<td>256</td>
<td />
</tr>
<tr>
<td>
<b>TastieraOne</b>
</td>
<td>257</td>
<td />
</tr>
<tr>
<td>
<b>Tastiera due</b>
</td>
<td>258</td>
<td />
</tr>
<tr>
<td>
<b>Tastiera tre</b>
</td>
<td>259</td>
<td />
</tr>
<tr>
<td>
<b>TastieraQuattro</b>
</td>
<td>260</td>
<td />
</tr>
<tr>
<td>
<b>TastieraFive</b>
</td>
<td>261</td>
<td />
</tr>
<tr>
<td>
<b>TastieraSix</b>
</td>
<td>262</td>
<td />
</tr>
<tr>
<td>
<b>TastieraSeven</b>
</td>
<td>263</td>
<td />
</tr>
<tr>
<td>
<b>TastieraEight</b>
</td>
<td>264</td>
<td />
</tr>
<tr>
<td>
<b>TastieraNine</b>
</td>
<td>265</td>
<td />
</tr>
<tr>
<td>
<b>Periodo della tastiera</b>
</td>
<td>266</td>
<td />
</tr>
<tr>
<td>
<b>Divisore di tastiera</b>
</td>
<td>267</td>
<td />
</tr>
<tr>
<td>
<b>TastieraMultiply</b>
</td>
<td>268</td>
<td />
</tr>
<tr>
<td>
<b>TastieraMinus</b>
</td>
<td>269</td>
<td />
</tr>
<tr>
<td>
<b>TastieraPlus</b>
</td>
<td>270</td>
<td />
</tr>
<tr>
<td>
<b>TastieraInserisci</b>
</td>
<td>271</td>
<td />
</tr>
<tr>
<td>
<b>TastieraEquivalente</b>
</td>
<td>272</td>
<td />
</tr>
<tr>
<td>
<b>Up</b>
</td>
<td>273</td>
<td />
</tr>
<tr>
<td>
<b>Giù</b>
</td>
<td>274</td>
<td />
</tr>
<tr>
<td>
<b>Sinistra</b>
</td>
<td>275</td>
<td />
</tr>
<tr>
<td>
<b>Sinistra</b>
</td>
<td>276</td>
<td />
</tr>
<tr>
<td>
<b>Inserisci</b>
</td>
<td>277</td>
<td />
</tr>
<tr>
<td>
<b>Casa</b>
</td>
<td>278</td>
<td />
</tr>
<tr>
<td>
<b>Fine</b>
</td>
<td>279</td>
<td />
</tr>
<tr>
<td>
<b>PageUp</b>
</td>
<td>280</td>
<td />
</tr>
<tr>
<td>
<b>Pagina giù</b>
</td>
<td>281</td>
<td />
</tr>
<tr>
<td>
<b>Maiusc Sinistra</b>
</td>
<td>304</td>
<td />
</tr>
<tr>
<td>
<b>Spostamento a destra</b>
</td>
<td>303</td>
<td />
</tr>
<tr>
<td>
<b>Meta sinistra</b>
</td>
<td>310</td>
<td />
</tr>
<tr>
<td>
<b>RightMeta</b>
</td>
<td>309</td>
<td />
</tr>
<tr>
<td>
<b>Alt sinistra</b>
</td>
<td>308</td>
<td />
</tr>
<tr>
<td>
<b>RightAlt</b>
</td>
<td>307</td>
<td />
</tr>
<tr>
<td>
<b>Controllo a sinistra</b>
</td>
<td>306</td>
<td />
</tr>
<tr>
<td>
<b>Controllo a destra</b>
</td>
<td>305</td>
<td />
</tr>
<tr>
<td>
<b>Blocco Capsula</b>
</td>
<td>301</td>
<td />
</tr>
<tr>
<td>
<b>Blocco numeri</b>
</td>
<td>300</td>
<td />
</tr>
<tr>
<td>
<b>Blocco di scorrimento</b>
</td>
<td>302</td>
<td />
</tr>
<tr>
<td>
<b>Superiore sinistra</b>
</td>
<td>311</td>
<td />
</tr>
<tr>
<td>
<b>RightSuper</b>
</td>
<td>312</td>
<td />
</tr>
<tr>
<td>
<b>Modalità</b>
</td>
<td>313</td>
<td />
</tr>
<tr>
<td>
<b>Componi</b>
</td>
<td>314</td>
<td />
</tr>
<tr>
<td>
<b>Aiuto</b>
</td>
<td>315</td>
<td />
</tr>
<tr>
<td>
<b>Stampa</b>
</td>
<td>316</td>
<td />
</tr>
<tr>
<td>
<b>SysReq</b>
</td>
<td>317</td>
<td />
</tr>
<tr>
<td>
<b>Rottura</b>
</td>
<td>318</td>
<td />
</tr>
<tr>
<td>
<b>Menu</b>
</td>
<td>319</td>
<td />
</tr>
<tr>
<td>
<b>Potenza</b>
</td>
<td>320</td>
<td />
</tr>
<tr>
<td>
<b>Euro</b>
</td>
<td>321</td>
<td />
</tr>
<tr>
<td>
<b>Annullamento</b>
</td>
<td>322</td>
<td />
</tr>
<tr>
<td>
<b>F1</b>
</td>
<td>282</td>
<td />
</tr>
<tr>
<td>
<b>F2</b>
</td>
<td>283</td>
<td />
</tr>
<tr>
<td>
<b>F3</b>
</td>
<td>284</td>
<td />
</tr>
<tr>
<td>
<b>F4</b>
</td>
<td>285</td>
<td />
</tr>
<tr>
<td>
<b>F5</b>
</td>
<td>286</td>
<td />
</tr>
<tr>
<td>
<b>F6</b>
</td>
<td>287</td>
<td />
</tr>
<tr>
<td>
<b>F7</b>
</td>
<td>288</td>
<td />
</tr>
<tr>
<td>
<b>F8</b>
</td>
<td>289</td>
<td />
</tr>
<tr>
<td>
<b>F9</b>
</td>
<td>290</td>
<td />
</tr>
<tr>
<td>
<b>F10</b>
</td>
<td>291</td>
<td />
</tr>
<tr>
<td>
<b>F11</b>
</td>
<td>292</td>
<td />
</tr>
<tr>
<td>
<b>F12</b>
</td>
<td>293</td>
<td />
</tr>
<tr>
<td>
<b>F13</b>
</td>
<td>294</td>
<td />
</tr>
<tr>
<td>
<b>F14</b>
</td>
<td>295</td>
<td />
</tr>
<tr>
<td>
<b>F15</b>
</td>
<td>296</td>
<td />
</tr>
<tr>
<td>
<b>Mondo0</b>
</td>
<td>160</td>
<td />
</tr>
<tr>
<td>
<b>Mondo1</b>
</td>
<td>161</td>
<td />
</tr>
<tr>
<td>
<b>Mondo2</b>
</td>
<td>162</td>
<td />
</tr>
<tr>
<td>
<b>Mondo3</b>
</td>
<td>163</td>
<td />
</tr>
<tr>
<td>
<b>Mondo4</b>
</td>
<td>164</td>
<td />
</tr>
<tr>
<td>
<b>Mondo5</b>
</td>
<td>165</td>
<td />
</tr>
<tr>
<td>
<b>Mondo6</b>
</td>
<td>166</td>
<td />
</tr>
<tr>
<td>
<b>Mondo7</b>
</td>
<td>167</td>
<td />
</tr>
<tr>
<td>
<b>Mondo8</b>
</td>
<td>168</td>
<td />
</tr>
<tr>
<td>
<b>Mondo9</b>
</td>
<td>169</td>
<td />
</tr>
<tr>
<td>
<b>Mondo10</b>
</td>
<td>170</td>
<td />
</tr>
<tr>
<td>
<b>Mondo11</b>
</td>
<td>171</td>
<td />
</tr>
<tr>
<td>
<b>Mondo12</b>
</td>
<td>172</td>
<td />
</tr>
<tr>
<td>
<b>Mondo13</b>
</td>
<td>173</td>
<td />
</tr>
<tr>
<td>
<b>Mondo14</b>
</td>
<td>174</td>
<td />
</tr>
<tr>
<td>
<b>Mondo15</b>
</td>
<td>175</td>
<td />
</tr>
<tr>
<td>
<b>Mondo16</b>
</td>
<td>176</td>
<td />
</tr>
<tr>
<td>
<b>Mondo17</b>
</td>
<td>177</td>
<td />
</tr>
<tr>
<td>
<b>Mondo18</b>
</td>
<td>178</td>
<td />
</tr>
<tr>
<td>
<b>Mondo19</b>
</td>
<td>179</td>
<td />
</tr>
<tr>
<td>
<b>Mondo20</b>
</td>
<td>180</td>
<td />
</tr>
<tr>
<td>
<b>Mondo21</b>
</td>
<td>181</td>
<td />
</tr>
<tr>
<td>
<b>Mondo22</b>
</td>
<td>182</td>
<td />
</tr>
<tr>
<td>
<b>Mondo23</b>
</td>
<td>183</td>
<td />
</tr>
<tr>
<td>
<b>World24</b>
</td>
<td>184</td>
<td />
</tr>
<tr>
<td>
<b>Mondo25</b>
</td>
<td>185</td>
<td />
</tr>
<tr>
<td>
<b>Mondo26</b>
</td>
<td>186</td>
<td />
</tr>
<tr>
<td>
<b>Mondo27</b>
</td>
<td>187</td>
<td />
</tr>
<tr>
<td>
<b>Mondo28</b>
</td>
<td>188</td>
<td />
</tr>
<tr>
<td>
<b>Mondo29</b>
</td>
<td>189</td>
<td />
</tr>
<tr>
<td>
<b>World30</b>
</td>
<td>190</td>
<td />
</tr>
<tr>
<td>
<b>World31</b>
</td>
<td>191</td>
<td />
</tr>
<tr>
<td>
<b>World32</b>
</td>
<td>192</td>
<td />
</tr>
<tr>
<td>
<b>World33</b>
</td>
<td>193</td>
<td />
</tr>
<tr>
<td>
<b>World34</b>
</td>
<td>194</td>
<td />
</tr>
<tr>
<td>
<b>World35</b>
</td>
<td>195</td>
<td />
</tr>
<tr>
<td>
<b>World36</b>
</td>
<td>196</td>
<td />
</tr>
<tr>
<td>
<b>World37</b>
</td>
<td>197</td>
<td />
</tr>
<tr>
<td>
<b>World38</b>
</td>
<td>198</td>
<td />
</tr>
<tr>
<td>
<b>World39</b>
</td>
<td>199</td>
<td />
</tr>
<tr>
<td>
<b>World40</b>
</td>
<td>200</td>
<td />
</tr>
<tr>
<td>
<b>World41</b>
</td>
<td>201</td>
<td />
</tr>
<tr>
<td>
<b>World42</b>
</td>
<td>202</td>
<td />
</tr>
<tr>
<td>
<b>World43</b>
</td>
<td>203</td>
<td />
</tr>
<tr>
<td>
<b>World44</b>
</td>
<td>204</td>
<td />
</tr>
<tr>
<td>
<b>World45</b>
</td>
<td>205</td>
<td />
</tr>
<tr>
<td>
<b>World46</b>
</td>
<td>206</td>
<td />
</tr>
<tr>
<td>
<b>World47</b>
</td>
<td>207</td>
<td />
</tr>
<tr>
<td>
<b>World48</b>
</td>
<td>208</td>
<td />
</tr>
<tr>
<td>
<b>World49</b>
</td>
<td>209</td>
<td />
</tr>
<tr>
<td>
<b>World50</b>
</td>
<td>210</td>
<td />
</tr>
<tr>
<td>
<b>World51</b>
</td>
<td>211</td>
<td />
</tr>
<tr>
<td>
<b>World52</b>
</td>
<td>212</td>
<td />
</tr>
<tr>
<td>
<b>World53</b>
</td>
<td>213</td>
<td />
</tr>
<tr>
<td>
<b>World54</b>
</td>
<td>214</td>
<td />
</tr>
<tr>
<td>
<b>World55</b>
</td>
<td>215</td>
<td />
</tr>
<tr>
<td>
<b>World56</b>
</td>
<td>216</td>
<td />
</tr>
<tr>
<td>
<b>World57</b>
</td>
<td>217</td>
<td />
</tr>
<tr>
<td>
<b>World58</b>
</td>
<td>218</td>
<td />
</tr>
<tr>
<td>
<b>World59</b>
</td>
<td>219</td>
<td />
</tr>
<tr>
<td>
<b>World60</b>
</td>
<td>220</td>
<td />
</tr>
<tr>
<td>
<b>World61</b>
</td>
<td>221</td>
<td />
</tr>
<tr>
<td>
<b>World62</b>
</td>
<td>222</td>
<td />
</tr>
<tr>
<td>
<b>World63</b>
</td>
<td>223</td>
<td />
</tr>
<tr>
<td>
<b>World64</b>
</td>
<td>224</td>
<td />
</tr>
<tr>
<td>
<b>World65</b>
</td>
<td>225</td>
<td />
</tr>
<tr>
<td>
<b>World66</b>
</td>
<td>226</td>
<td />
</tr>
<tr>
<td>
<b>World67</b>
</td>
<td>227</td>
<td />
</tr>
<tr>
<td>
<b>World68</b>
</td>
<td>228</td>
<td />
</tr>
<tr>
<td>
<b>World69</b>
</td>
<td>229</td>
<td />
</tr>
<tr>
<td>
<b>World70</b>
</td>
<td>230</td>
<td />
</tr>
<tr>
<td>
<b>World71</b>
</td>
<td>231</td>
<td />
</tr>
<tr>
<td>
<b>World72</b>
</td>
<td>232</td>
<td />
</tr>
<tr>
<td>
<b>World73</b>
</td>
<td>233</td>
<td />
</tr>
<tr>
<td>
<b>World74</b>
</td>
<td>234</td>
<td />
</tr>
<tr>
<td>
<b>World75</b>
</td>
<td>235</td>
<td />
</tr>
<tr>
<td>
<b>World76</b>
</td>
<td>236</td>
<td />
</tr>
<tr>
<td>
<b>World77</b>
</td>
<td>237</td>
<td />
</tr>
<tr>
<td>
<b>World78</b>
</td>
<td>238</td>
<td />
</tr>
<tr>
<td>
<b>World79</b>
</td>
<td>239</td>
<td />
</tr>
<tr>
<td>
<b>World80</b>
</td>
<td>240</td>
<td />
</tr>
<tr>
<td>
<b>World81</b>
</td>
<td>241</td>
<td />
</tr>
<tr>
<td>
<b>World82</b>
</td>
<td>242</td>
<td />
</tr>
<tr>
<td>
<b>World83</b>
</td>
<td>243</td>
<td />
</tr>
<tr>
<td>
<b>World84</b>
</td>
<td>244</td>
<td />
</tr>
<tr>
<td>
<b>World85</b>
</td>
<td>245</td>
<td />
</tr>
<tr>
<td>
<b>World86</b>
</td>
<td>246</td>
<td />
</tr>
<tr>
<td>
<b>World87</b>
</td>
<td>247</td>
<td />
</tr>
<tr>
<td>
<b>World88</b>
</td>
<td>248</td>
<td />
</tr>
<tr>
<td>
<b>World89</b>
</td>
<td>249</td>
<td />
</tr>
<tr>
<td>
<b>World90</b>
</td>
<td>250</td>
<td />
</tr>
<tr>
<td>
<b>World91</b>
</td>
<td>251</td>
<td />
</tr>
<tr>
<td>
<b>World92</b>
</td>
<td>252</td>
<td />
</tr>
<tr>
<td>
<b>World93</b>
</td>
<td>253</td>
<td />
</tr>
<tr>
<td>
<b>World94</b>
</td>
<td>254</td>
<td />
</tr>
<tr>
<td>
<b>World95</b>
</td>
<td>255</td>
<td />
</tr>
<tr>
<td>
<b>PulsanteX</b>
</td>
<td>1000</td>
<td />
</tr>
<tr>
<td>
<b>PulsanteY</b>
</td>
<td>1001</td>
<td />
</tr>
<tr>
<td>
<b>PulsanteA</b>
</td>
<td>1002</td>
<td />
</tr>
<tr>
<td>
<b>PulsanteB</b>
</td>
<td>1003</td>
<td />
</tr>
<tr>
<td>
<b>ButtonR1</b>
</td>
<td>1004</td>
<td />
</tr>
<tr>
<td>
<b>ButtonL1</b>
</td>
<td>1005</td>
<td />
</tr>
<tr>
<td>
<b>ButtonR2</b>
</td>
<td>1006</td>
<td />
</tr>
<tr>
<td>
<b>ButtonL2</b>
</td>
<td>1007</td>
<td />
</tr>
<tr>
<td>
<b>ButtonR3</b>
</td>
<td>1008</td>
<td />
</tr>
<tr>
<td>
<b>ButtonL3</b>
</td>
<td>1009</td>
<td />
</tr>
<tr>
<td>
<b>PulsanteInizio</b>
</td>
<td>1010</td>
<td />
</tr>
<tr>
<td>
<b>PulsanteSelezione</b>
</td>
<td>1011</td>
<td />
</tr>
<tr>
<td>
<b>DPadLeft</b>
</td>
<td>1012</td>
<td />
</tr>
<tr>
<td>
<b>DPadRight</b>
</td>
<td>1013</td>
<td />
</tr>
<tr>
<td>
<b>DPadUp</b>
</td>
<td>1014</td>
<td />
</tr>
<tr>
<td>
<b>DPadDown</b>
</td>
<td>1015</td>
<td />
</tr>
<tr>
<td>
<b>Thumbstick1</b>
</td>
<td>1016</td>
<td />
</tr>
<tr>
<td>
<b>Thumbstick2</b>
</td>
<td>1017</td>
</tr>
Nome

Vedi anche:

Campioni di codice

Questo esempio ottiene un elenco di gamepad di navigazione e un elenco dei loro supportati Enum.KeyCodes.Quindi, esegue un ciclo attraverso l'elenco KeyCode supportato e lega i pulsanti ButtonX e X alle funzioni se sono supportati da un gamepad utilizzando il ContextActionService.

Binding Supportati Codici Chiave del Gamepad

local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
local function actionHandler(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
print("Action Handler: " .. actionName)
print(inputObject)
end
-- Poiché questa funzione non restituisce nulla, questo handler restituirà
-- "" lavello "l'input e nessun altro gestore di azione verrà chiamato dopo
-- questo.
end
local navGamepads = UserInputService:GetNavigationGamepads()
for _, gamepad in pairs(navGamepads) do
local supportedKeyCodes = UserInputService:GetSupportedGamepadKeyCodes(gamepad)
for _, keycode in pairs(supportedKeyCodes) do
if keycode == Enum.KeyCode.ButtonX then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.ButtonX)
end
if keycode == Enum.KeyCode.X then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.X)
end
end
end

Position

Lettura Parallela

Questa proprietà descrive un valore posizionale di Vector3 di questo input.

Per l'input del mouse e del tocco, questa è la posizione dello schermo del mouse/touch, descritta nei componenti X e Y.L'inserto applicato agli elementi GUI (come dalla barra superiore) viene contato nella posizione.

Per l'input della ruota del mouse, la componente Z descrive se la ruota è stata spostata in avanti (1), indietro (-1) o non affatto (0).

Per l'input Enum.KeyCode , questo indica la posizione del GiocatoreMouse .

Nota che un InputObject corrispondente a Enum.UserInputType.MouseButton1 (clic sinistro) e Enum.UserInputType.MouseButton2 (clic destro) fornito da un InputBegan callback non avrà il suo Delta o Position aggiornato una volta creato, tranne quando l'input del mouse termina.Per ottenere posizioni aggiornate per gli input del mouse, devi invece fare riferimento a un InputObject da un InputChanged Richiama, o chiamare GetMouseLocation() .Tuttavia, qualsiasi InputObjects corrispondente agli input di tocco avrà il loro delta e la posizione aggiornati ogni frame durante tutta la loro vita.

Vedi anche

Campioni di codice

L'esempio seguente mostra uno dei molti esempi di utilizzo del trattamento dell'input dell'utente da InputBegan a seconda del suo tipo.

Trattamento dell'input Iniziato

-- Per utilizzare l'evento InputBegan, il servizio UserInputService deve essere utilizzato
local UserInputService = game:GetService("UserInputService")
-- Una funzione di esempio che fornisce diversi casi d'uso per vari tipi di input dell'utente
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
if gameProcessed then
print("The game engine internally observed this input!")
else
print("The game engine did not internally observe this input!")
end
end)

UserInputState

Lettura Parallela

UserInputState descrive lo stato di un input in esecuzione, a seguito di un flusso specifico a seconda del UserInputType.Usa l'enum con lo stesso nome, Enum.UserInputState .Vedi la pagina enum per una lista di tutti i valori possibili per questa Proprietà.

Vedi anche:

Campioni di codice

Questo esempio ottiene un elenco di gamepad di navigazione e un elenco dei loro supportati Enum.KeyCodes.Quindi, esegue un ciclo attraverso l'elenco KeyCode supportato e lega i pulsanti ButtonX e X alle funzioni se sono supportati da un gamepad utilizzando il ContextActionService.

Binding Supportati Codici Chiave del Gamepad

local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
local function actionHandler(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
print("Action Handler: " .. actionName)
print(inputObject)
end
-- Poiché questa funzione non restituisce nulla, questo handler restituirà
-- "" lavello "l'input e nessun altro gestore di azione verrà chiamato dopo
-- questo.
end
local navGamepads = UserInputService:GetNavigationGamepads()
for _, gamepad in pairs(navGamepads) do
local supportedKeyCodes = UserInputService:GetSupportedGamepadKeyCodes(gamepad)
for _, keycode in pairs(supportedKeyCodes) do
if keycode == Enum.KeyCode.ButtonX then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.ButtonX)
end
if keycode == Enum.KeyCode.X then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.X)
end
end
end

UserInputType

Lettura Parallela

UserInputType è una proprietà che descrive per quale tipo di input questo InputObject rappresenta, come ad esempio Topo, or mouse as computer mouse, tastiera, touch o gamepad.Usa l'enum con lo stesso nome, Enum.UserInputType .Vedi la pagina enum per una lista di tutti i valori possibili per questa Proprietà.

Vedi anche:

Campioni di codice

L'esempio seguente mostra uno dei molti esempi di utilizzo del trattamento dell'input dell'utente da InputBegan a seconda del suo tipo.

Trattamento dell'input Iniziato

-- Per utilizzare l'evento InputBegan, il servizio UserInputService deve essere utilizzato
local UserInputService = game:GetService("UserInputService")
-- Una funzione di esempio che fornisce diversi casi d'uso per vari tipi di input dell'utente
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
if gameProcessed then
print("The game engine internally observed this input!")
else
print("The game engine did not internally observe this input!")
end
end)

Metodi

IsModifierKeyDown

Parametri

modifierKey: Enum.ModifierKey
Valore predefinito: ""

Restituzioni

Eventi