InputObject
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Um Objeto de Entrada representa uma única entrada do usuário, como movimento do mouse, toques, pressionamentos de tecla e muito mais. Ele é criado quando uma entrada começa.
As propriedades deste objeto variam de acordo com o UserInputType.Cada tipo de entrada passará por várias mudanças em seu UserInputState.Durante a vida de uma entrada, outras propriedades que descrevem a entrada podem mudar, como Position e Delta.Pressões de teclado e botões de gamepad terão o configurarde propriedades KeyCode.
Uma vez criado no início de uma entrada, o mesmo objeto persiste e é atualizado até que a entrada termine.Como resultado, você pode rastrear as alterações do Objetousando o evento Changed quando o usuário muda a entrada em questão.Você também pode colocar esses objetos em uma lista de entradas ativas e interagir com o objeto após sua criação por um evento como UserInputService.InputBegan.Isso é principalmente útil para eventos de toque, pois cada ponto de toque terá um objeto de entrada separado.
Veja também:
- ContextActionService , que passa um objeto de entrada para bound funções de manipulação de ação
- UserInputService , cujos eventos e funções muitas vezes usam InputObject
- GuiObject , cujos eventos relacionados à entrada do usuário usam o InputObject
Amostras de código
O seguinte exemplo demonstra um dos muitos exemplos de uso de lidar com a entrada do usuário a partir de InputBegan dependendo de seu tipo.
-- Para usar o evento InputBegan, o serviço UserInputService deve ser usado
local UserInputService = game:GetService("UserInputService")
-- Uma função de amostra que fornece vários casos de uso para vários tipos de entrada do usuário
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)
Resumo
Propriedades
Um Vector3 que descreve o Delta entre os movimentos do mouse/joystick.
Contém um Enum que descreve o tipo de entrada usada.
Descreve um valor posicional desta entrada.
Descreve o estado de uma entrada sendo executada, após um fluxo específico dependendo do UserInputType.
Descreve o tipo de entrada que está sendo realizada (mouse, teclado, controle / controle de jogo, toque, etc).
Métodos
Propriedades
Delta
Um Vector3 descrevendo o Delta (mudança) entre os movimentos do mouse/joystick.
Isso é útil quando usado com o input's position para rastrear a posição e o movimento do mouse/joystick do usuário, como quando você está criando scripts de movimento personalizados ou câmera.Considere alterações de entrada de objetos de rastreamento usando o evento Object.Changed ou quando as alterações de entrada do usuário via eventos, como UserInputService.InputChanged e GuiObject.InputChanged , ocorrem.
Observe que um InputObject correspondente a Enum.UserInputType.MouseButton1 (clique à esquerda) e Enum.UserInputType.MouseButton2 (clique à direita) fornecido por um InputBegan callback não terá seu Delta ou Position atualizado uma vez criado, exceto quando a entrada do mouse termina.Para obter deltas atualizados para entradas de mouse, você deve, em vez disso, referenciar um InputObject de um InputChanged de retorno de chamada ou chamar GetMouseDelta() .No entanto, qualquer InputObjects correspondente a entradas de toque terá seu delta e posição atualizados a cada quadro durante toda a vida útil.
Veja também:
Amostras de código
Este exemplo cria um script de binóculos que diminui os cliques do mouse do jogador FieldOfView() e MouseDeltaSensitivity() quando um jogador com um MouseEnabled() esquerda os cliques do mouse.O script também aponta a posição do jogador Camera para a posição mundial do clique do mouse Vector3.
Quando o jogador deixou os cliques do mouse novamente, a câmera do jogador reverte de volta para o a personalizado Enum.CameraType com o mesmo campo de visão e CFrame() como antes do jogador se aproximar com o script.
Enquanto o jogador usa os binóculos, o script bloqueia o mouse do jogador no centro da tela, definindo o mouse do jogador para BloquearCentro.A câmera do jogador se move quando o jogador move o mouse de acordo com a propriedade que passa por indicando a mudança de posição na tela do mouse.
Para que este exemplo funcione como esperado, ele deve ser colocado em um LocalScript .
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
-- Redefina a câmera de volta para CFrame e FieldOfView antes do 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()
-- Permitir que a câmera seja alterada por script
camera.CameraType = Enum.CameraType.Scriptable
-- Armazenar propriedades da câmera antes do zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Aproxime a câmera
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Tranclar e desacelerar o mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Redefinir ângulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom/desZoom da câmera
local function MouseClick()
if zoomed then
-- Desfocar a câmera
ResetCamera()
else
-- Ampliar na câmera
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- qualquer coisa acima tornaria a busca para cima e para baixo mais difícil; recomende qualquer coisa entre 0~1
local smoothness = 0.05 -- recomendar qualquer coisa entre 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
KeyCode
Contém um Enum.KeyCode enum que descreve que tipo de entrada foi usada.Para tipos de entrada como teclado, isso descreve qual tecla foi pressionada.Para entradas como o mouse, isso não fornece informações adicionais.
Enumas
<th>Valor</th><th>Descrição</th></tr></thead><tr><td><b>Desconhecido</b></td><td>0</td><td /></tr><tr><td><b>Retorno de espaço</b></td><td>8</td><td /></tr><tr><td><b>Aba</b></td><td>9</td><td /></tr><tr><td><b>Limpar</b></td><td>12</td><td /></tr><tr><td><b>Retorno</b></td><td>13</td><td /></tr><tr><td><b>Pausa</b></td><td>19</td><td /></tr><tr><td><b>Escapar</b></td><td>27</td><td /></tr><tr><td><b>Espaço</b></td><td>32</td><td /></tr><tr><td><b>Citação Dupla</b></td><td>34</td><td /></tr><tr><td><b>Hash</b></td><td>35</td><td /></tr><tr><td><b>Dólar</b></td><td>36</td><td /></tr><tr><td><b>Porcentagem</b></td><td>37</td><td /></tr><tr><td><b>Ampersand</b></td><td>38</td><td /></tr><tr><td><b>Citação</b></td><td>39</td><td /></tr><tr><td><b>Parentese Esquerda</b></td><td>40</td><td /></tr><tr><td><b>Parentese Direita</b></td><td>41</td><td /></tr><tr><td><b>Asterisco</b></td><td>42</td><td /></tr><tr><td><b>Mais</b></td><td>43</td><td /></tr><tr><td><b>Vírgula</b></td><td>44</td><td /></tr><tr><td><b>Menos</b></td><td>45</td><td /></tr><tr><td><b>Período</b></td><td>46</td><td /></tr><tr><td><b>Corte</b></td><td>47</td><td /></tr><tr><td><b>Zero</b></td><td>48</td><td /></tr><tr><td><b>Um</b></td><td>49</td><td /></tr><tr><td><b>Dois</b></td><td>50</td><td /></tr><tr><td><b>Três</b></td><td>51</td><td /></tr><tr><td><b>Quatro</b></td><td>52</td><td /></tr><tr><td><b>Cinco</b></td><td>53</td><td /></tr><tr><td><b>Seis</b></td><td>54</td><td /></tr><tr><td><b>Sete</b></td><td>55</td><td /></tr><tr><td><b>Oito</b></td><td>56</td><td /></tr><tr><td><b>Nove</b></td><td>57</td><td /></tr><tr><td><b>Colônia</b></td><td>58</td><td /></tr><tr><td><b>Semicolon</b></td><td>59</td><td /></tr><tr><td><b>MenosQue</b></td><td>60</td><td /></tr><tr><td><b>Iguais a</b></td><td>61</td><td /></tr><tr><td><b>Maior que</b></td><td>62</td><td /></tr><tr><td><b>Pergunta</b></td><td>63</td><td /></tr><tr><td><b>At</b></td><td>64</td><td /></tr><tr><td><b>Parêntese Esquerdo</b></td><td>91</td><td /></tr><tr><td><b>Corte para Trás</b></td><td>92</td><td /></tr><tr><td><b>Braço direito</b></td><td>93</td><td /></tr><tr><td><b>Cuidado</b></td><td>94</td><td /></tr><tr><td><b>Sublinha</b></td><td>95</td><td /></tr><tr><td><b>Citação</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>Cabelo Esquerdo</b></td><td>123</td><td /></tr><tr><td><b>Tubo</b></td><td>124</td><td /></tr><tr><td><b>DireitaCurly</b></td><td>125</td><td /></tr><tr><td><b>Traço</b></td><td>126</td><td /></tr><tr><td><b>Excluir</b></td><td>127</td><td /></tr><tr><td><b>TecladoZero</b></td><td>256</td><td /></tr><tr><td><b>Teclado Um</b></td><td>257</td><td /></tr><tr><td><b>Teclado Dois</b></td><td>258</td><td /></tr><tr><td><b>Teclado Três</b></td><td>259</td><td /></tr><tr><td><b>Teclado Quatro</b></td><td>260</td><td /></tr><tr><td><b>Teclado Cinco</b></td><td>261</td><td /></tr><tr><td><b>TecladoSix</b></td><td>262</td><td /></tr><tr><td><b>Teclado Sete</b></td><td>263</td><td /></tr><tr><td><b>Teclado Oito</b></td><td>264</td><td /></tr><tr><td><b>Teclado Nove</b></td><td>265</td><td /></tr><tr><td><b>Período da Tecla</b></td><td>266</td><td /></tr><tr><td><b>Divisão de Teclado</b></td><td>267</td><td /></tr><tr><td><b>TecladoMultiplicador</b></td><td>268</td><td /></tr><tr><td><b>Teclado Menos</b></td><td>269</td><td /></tr><tr><td><b>TecladoPlus</b></td><td>270</td><td /></tr><tr><td><b>TecladoEntrar</b></td><td>271</td><td /></tr><tr><td><b>Teclado Equivalente</b></td><td>272</td><td /></tr><tr><td><b>Up</b></td><td>273</td><td /></tr><tr><td><b>Para Baixo</b></td><td>274</td><td /></tr><tr><td><b>Direita</b></td><td>275</td><td /></tr><tr><td><b>Esquerda</b></td><td>276</td><td /></tr><tr><td><b>Inserir</b></td><td>277</td><td /></tr><tr><td><b>Início</b></td><td>278</td><td /></tr><tr><td><b>Fim</b></td><td>279</td><td /></tr><tr><td><b>Página para cima</b></td><td>280</td><td /></tr><tr><td><b>Página para Baixo</b></td><td>281</td><td /></tr><tr><td><b>Tecla de Mudança Esquerda</b></td><td>304</td><td /></tr><tr><td><b>Shift Direito</b></td><td>303</td><td /></tr><tr><td><b>Meta Esquerda</b></td><td>310</td><td /></tr><tr><td><b>Meta Direita</b></td><td>309</td><td /></tr><tr><td><b>Alt Esquerdo</b></td><td>308</td><td /></tr><tr><td><b>Alt direito</b></td><td>307</td><td /></tr><tr><td><b>Controle Esquerdo</b></td><td>306</td><td /></tr><tr><td><b>Controle Direito</b></td><td>305</td><td /></tr><tr><td><b>Bloqueio de Capsula</b></td><td>301</td><td /></tr><tr><td><b>Bloqueio de Número</b></td><td>300</td><td /></tr><tr><td><b>Bloqueio de Scroll</b></td><td>302</td><td /></tr><tr><td><b>Superior Esquerdo</b></td><td>311</td><td /></tr><tr><td><b>SuperDireita</b></td><td>312</td><td /></tr><tr><td><b>Modo</b></td><td>313</td><td /></tr><tr><td><b>Componha</b></td><td>314</td><td /></tr><tr><td><b>Ajuda</b></td><td>315</td><td /></tr><tr><td><b>Imprimir</b></td><td>316</td><td /></tr><tr><td><b>SysReq</b></td><td>317</td><td /></tr><tr><td><b>Quebra</b></td><td>318</td><td /></tr><tr><td><b>Menu</b></td><td>319</td><td /></tr><tr><td><b>Potência</b></td><td>320</td><td /></tr><tr><td><b>Euro</b></td><td>321</td><td /></tr><tr><td><b>Desfazer</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>Mundo0</b></td><td>160</td><td /></tr><tr><td><b>Mundo1</b></td><td>161</td><td /></tr><tr><td><b>Mundo2</b></td><td>162</td><td /></tr><tr><td><b>Mundo3</b></td><td>163</td><td /></tr><tr><td><b>Mundo4</b></td><td>164</td><td /></tr><tr><td><b>Mundo5</b></td><td>165</td><td /></tr><tr><td><b>Mundo6</b></td><td>166</td><td /></tr><tr><td><b>Mundo7</b></td><td>167</td><td /></tr><tr><td><b>Mundo8</b></td><td>168</td><td /></tr><tr><td><b>Mundo9</b></td><td>169</td><td /></tr><tr><td><b>Mundo10</b></td><td>170</td><td /></tr><tr><td><b>Mundo11</b></td><td>171</td><td /></tr><tr><td><b>Mundo12</b></td><td>172</td><td /></tr><tr><td><b>Mundo13</b></td><td>173</td><td /></tr><tr><td><b>Mundo14</b></td><td>174</td><td /></tr><tr><td><b>Mundo15</b></td><td>175</td><td /></tr><tr><td><b>Mundo16</b></td><td>176</td><td /></tr><tr><td><b>Mundo17</b></td><td>177</td><td /></tr><tr><td><b>Mundo18</b></td><td>178</td><td /></tr><tr><td><b>Mundo19</b></td><td>179</td><td /></tr><tr><td><b>Mundo20</b></td><td>180</td><td /></tr><tr><td><b>Mundo21</b></td><td>181</td><td /></tr><tr><td><b>Mundo22</b></td><td>182</td><td /></tr><tr><td><b>Mundo23</b></td><td>183</td><td /></tr><tr><td><b>Mundo24</b></td><td>184</td><td /></tr><tr><td><b>Mundo25</b></td><td>185</td><td /></tr><tr><td><b>Mundo26</b></td><td>186</td><td /></tr><tr><td><b>Mundo27</b></td><td>187</td><td /></tr><tr><td><b>Mundo28</b></td><td>188</td><td /></tr><tr><td><b>Mundo29</b></td><td>189</td><td /></tr><tr><td><b>Mundo30</b></td><td>190</td><td /></tr><tr><td><b>Mundo31</b></td><td>191</td><td /></tr><tr><td><b>World32</b></td><td>192</td><td /></tr><tr><td><b>Mundo33</b></td><td>193</td><td /></tr><tr><td><b>Mundo34</b></td><td>194</td><td /></tr><tr><td><b>Mundo35</b></td><td>195</td><td /></tr><tr><td><b>Mundo36</b></td><td>196</td><td /></tr><tr><td><b>Mundo37</b></td><td>197</td><td /></tr><tr><td><b>Mundo38</b></td><td>198</td><td /></tr><tr><td><b>Mundo39</b></td><td>199</td><td /></tr><tr><td><b>Mundo40</b></td><td>200</td><td /></tr><tr><td><b>Mundo41</b></td><td>201</td><td /></tr><tr><td><b>World42</b></td><td>202</td><td /></tr><tr><td><b>Mundo43</b></td><td>203</td><td /></tr><tr><td><b>Mundo44</b></td><td>204</td><td /></tr><tr><td><b>Mundo45</b></td><td>205</td><td /></tr><tr><td><b>Mundo46</b></td><td>206</td><td /></tr><tr><td><b>Mundo47</b></td><td>207</td><td /></tr><tr><td><b>Mundo48</b></td><td>208</td><td /></tr><tr><td><b>Mundo49</b></td><td>209</td><td /></tr><tr><td><b>Mundo50</b></td><td>210</td><td /></tr><tr><td><b>Mundo51</b></td><td>211</td><td /></tr><tr><td><b>Mundo52</b></td><td>212</td><td /></tr><tr><td><b>Mundo53</b></td><td>213</td><td /></tr><tr><td><b>Mundo54</b></td><td>214</td><td /></tr><tr><td><b>Mundo55</b></td><td>215</td><td /></tr><tr><td><b>Mundo56</b></td><td>216</td><td /></tr><tr><td><b>Mundo57</b></td><td>217</td><td /></tr><tr><td><b>Mundo58</b></td><td>218</td><td /></tr><tr><td><b>Mundo59</b></td><td>219</td><td /></tr><tr><td><b>Mundo60</b></td><td>220</td><td /></tr><tr><td><b>Mundo61</b></td><td>221</td><td /></tr><tr><td><b>Mundo62</b></td><td>222</td><td /></tr><tr><td><b>Mundo63</b></td><td>223</td><td /></tr><tr><td><b>World64</b></td><td>224</td><td /></tr><tr><td><b>Mundo65</b></td><td>225</td><td /></tr><tr><td><b>Mundo66</b></td><td>226</td><td /></tr><tr><td><b>Mundo67</b></td><td>227</td><td /></tr><tr><td><b>Mundo68</b></td><td>228</td><td /></tr><tr><td><b>Mundo69</b></td><td>229</td><td /></tr><tr><td><b>Mundo70</b></td><td>230</td><td /></tr><tr><td><b>Mundo71</b></td><td>231</td><td /></tr><tr><td><b>Mundo72</b></td><td>232</td><td /></tr><tr><td><b>Mundo73</b></td><td>233</td><td /></tr><tr><td><b>Mundo74</b></td><td>234</td><td /></tr><tr><td><b>Mundo75</b></td><td>235</td><td /></tr><tr><td><b>Mundo76</b></td><td>236</td><td /></tr><tr><td><b>World77</b></td><td>237</td><td /></tr><tr><td><b>Mundo78</b></td><td>238</td><td /></tr><tr><td><b>Mundo79</b></td><td>239</td><td /></tr><tr><td><b>Mundo80</b></td><td>240</td><td /></tr><tr><td><b>Mundo81</b></td><td>241</td><td /></tr><tr><td><b>Mundo82</b></td><td>242</td><td /></tr><tr><td><b>Mundo83</b></td><td>243</td><td /></tr><tr><td><b>Mundo84</b></td><td>244</td><td /></tr><tr><td><b>Mundo85</b></td><td>245</td><td /></tr><tr><td><b>Mundo86</b></td><td>246</td><td /></tr><tr><td><b>Mundo87</b></td><td>247</td><td /></tr><tr><td><b>World88</b></td><td>248</td><td /></tr><tr><td><b>Mundo89</b></td><td>249</td><td /></tr><tr><td><b>Mundo90</b></td><td>250</td><td /></tr><tr><td><b>Mundo91</b></td><td>251</td><td /></tr><tr><td><b>Mundo92</b></td><td>252</td><td /></tr><tr><td><b>Mundo93</b></td><td>253</td><td /></tr><tr><td><b>Mundo94</b></td><td>254</td><td /></tr><tr><td><b>Mundo95</b></td><td>255</td><td /></tr><tr><td><b>BotãoX</b></td><td>1000</td><td /></tr><tr><td><b>BotãoY</b></td><td>1001</td><td /></tr><tr><td><b>BotãoA</b></td><td>1002</td><td /></tr><tr><td><b>BotãoB</b></td><td>1003</td><td /></tr><tr><td><b>BotãoR1</b></td><td>1004</td><td /></tr><tr><td><b>BotãoL1</b></td><td>1005</td><td /></tr><tr><td><b>BotãoR2</b></td><td>1006</td><td /></tr><tr><td><b>BotãoL2</b></td><td>1007</td><td /></tr><tr><td><b>BotãoR3</b></td><td>1008</td><td /></tr><tr><td><b>BotãoL3</b></td><td>1009</td><td /></tr><tr><td><b>Botão Início</b></td><td>1010</td><td /></tr><tr><td><b>BotãoSelecionar</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>
Qual o nome |
---|
Veja também:
Amostras de código
Este exemplo obtém uma lista de gamepads de navegação e uma lista de seus suportados Enum.KeyCodes.Então, ele itera através da lista de Códigos de Chave suportada e vincula os botões ButtonX e X às funções se forem suportados por um gamepad usando o ContextActionService.
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
-- Como essa função não retorna nada, esse manipulador vai
-- “larvar” a entrada e nenhum outro manipulador de ação será chamado após
-- essa aqui
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
Essa propriedade descreve um valor posicional de Vector3 desta entrada.
Para entrada de mouse e toque, esta é a posição da tela do mouse/toque, descrita nos componentes X e Y.O inseto aplicado a elementos de GUI (como da barra superior) é contado na posição.
Para a entrada da roda do mouse, o componente Z descreve se a roda foi movida para a frente (1), para trás (-1) ou não em tudo (0).
Para Enum.KeyCode, isso indica a posição do Mouse.
Observe que um InputObject correspondente a Enum.UserInputType.MouseButton1 (clique à esquerda) e Enum.UserInputType.MouseButton2 (clique à direita) fornecido por um InputBegan callback não terá seu Delta ou Position atualizado uma vez criado, exceto quando a entrada do mouse termina.Para obter posições atualizadas para entradas de mouse, você deve, em vez disso, referenciar um InputObject de um InputChanged de retorno de chamada ou chamar GetMouseLocation() .No entanto, qualquer InputObjects correspondente a entradas de toque terá seu delta e posição atualizados a cada quadro durante toda a vida útil.
Veja também
Amostras de código
O seguinte exemplo demonstra um dos muitos exemplos de uso de lidar com a entrada do usuário a partir de InputBegan dependendo de seu tipo.
-- Para usar o evento InputBegan, o serviço UserInputService deve ser usado
local UserInputService = game:GetService("UserInputService")
-- Uma função de amostra que fornece vários casos de uso para vários tipos de entrada do usuário
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
Estado de entrada do usuário descreve o estado de uma entrada sendo realizada, após um fluxo específico dependendo do UserInputType.Ela usa o enum do mesmo nome, Enum.UserInputState .Veja a página de enumeração para uma lista de todos os valores possíveis para essa propriedade.
Veja também:
Amostras de código
Este exemplo obtém uma lista de gamepads de navegação e uma lista de seus suportados Enum.KeyCodes.Então, ele itera através da lista de Códigos de Chave suportada e vincula os botões ButtonX e X às funções se forem suportados por um gamepad usando o ContextActionService.
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
-- Como essa função não retorna nada, esse manipulador vai
-- “larvar” a entrada e nenhum outro manipulador de ação será chamado após
-- essa aqui
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
Tipo de entrada do usuário é uma propriedade que descreve para que tipo de entrada este InputObject representa, como mouse, teclado, toque ou entrada de gamepad.Ela usa o enum do mesmo nome, Enum.UserInputType .Veja a página de enumeração para uma lista de todos os valores possíveis para essa propriedade.
Veja também:
Amostras de código
O seguinte exemplo demonstra um dos muitos exemplos de uso de lidar com a entrada do usuário a partir de InputBegan dependendo de seu tipo.
-- Para usar o evento InputBegan, o serviço UserInputService deve ser usado
local UserInputService = game:GetService("UserInputService")
-- Uma função de amostra que fornece vários casos de uso para vários tipos de entrada do usuário
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)