InputObject
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Un objeto de entrada representa una sola entrada de un usuario, como el movimiento del mouse, los toques, la presión de teclas y más. Se crea cuando comienza una entrada.
Las propiedades de este objeto varían según el UserInputType.Cada tipo de entrada pasará por varios cambios a su UserInputState .Durante la vida útil de una entrada, otras propiedades que describan más a la entrada pueden cambiar, como Position y Delta.Los presionamientos de teclado y botón del gamepad tendrán el establecerde propiedades KeyCode.
Una vez creado al comienzo de una entrada, el mismo objeto persiste y se actualiza hasta que termina la entrada.Como resultado, puedes rastrear los cambios del objeto utilizando el evento Changed cuando el usuario cambia la entrada en cuestión.También puedes colocar estos objetos en una lista de pistas de entrada activas e interactuar con el objeto después de su creación por un evento como UserInputService.InputBegan .Esto es principalmente útil para eventos táctiles, ya que cada punto de toque tendrá un objeto de entrada separado.
Vea también:
- ContextActionService , que pasa un objeto de entrada a bound funciones de manejo de acciones
- UserInputService , cuyos eventos y funciones a menudo usan InputObject
- GuiObject , cuyos eventos relacionados con la entrada del usuario usan InputObject
Muestras de código
El siguiente ejemplo muestra uno de los muchos ejemplos de uso de manejar la entrada del usuario desde InputBegan dependiendo de su tipo.
-- Para utilizar el evento InputBegan, se debe utilizar el servicio UserInputService
local UserInputService = game:GetService("UserInputService")
-- Una función de muestra que proporciona múltiples casos de uso para varios tipos de entrada de usuario
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)
Resumen
Propiedades
Un Vector3 que describe el Delta entre los movimientos del ratón/joystick.
Contiene un Enum que describe el tipo de entrada utilizada.
Describe un valor posicional de esta entrada.
Describe el estado de una entrada que se está realizando, siguiendo un flujo específico dependiendo del UserInputType.
Describe el tipo de entrada que se está realizando (ratón, teclado, controlador para juego, toque, etc.).
Métodos
Propiedades
Delta
Un Vector3 que describe el Delta (cambio) entre los movimientos del ratón/joystick.
Esto es útil cuando se usa con el input's position para rastrear la posición y el movimiento del mouse/joystick del usuario, como cuando estás creando movimientos personalizados o guiones de cámara.Considera realizar cambios de seguimiento en el objeto de entrada utilizando el evento Object.Changed o cuando el usuario cambia la entrada a través de eventos como UserInputService.InputChanged y GuiObject.InputChanged .
Tenga en cuenta que un InputObject correspondiente a Enum.UserInputType.MouseButton1 (hcer clicizquierdo) y Enum.UserInputType.MouseButton2 (hcer clicderecho) suministrado desde un InputBegan llamada de devolución no tendrá su Delta o Position actualizado una vez creado, excepto cuando la entrada del mouse termina.Para obtener deltas actualizados para las entradas del mouse, debes referenciar un InputObject desde una llamada de devolución InputChanged o llamar GetMouseDelta() .Sin embargo, cualquier InputObjects correspondiente a las entradas de toque tendrá su delta y posición actualizados en cada marco a lo largo de su vida útil.
Vea también:
Muestras de código
Este ejemplo crea un guión de binoculares que reduce los clics del jugador FieldOfView() y MouseDeltaSensitivity() cuando un jugador con un MouseEnabled() deja clics del mouse.El script también apunta la posición del jugador Camera hacia la posición mundial del clic del mouse Vector3.
Cuando el jugador vuelve a hacer clic con el ratón, la cámara del jugador se revertirá al campo de visión personalizado Enum.CameraType con el mismo campo de visión y CFrame() como antes de que el jugador se acercara con el script.
Mientras el jugador usa los binoculares, el script bloquea el mouse del jugador en el centro de la pantalla al establecer el mouse del jugador en MouseBehavior().La cámara del jugador se mueve cuando el jugador mueve el mouse de acuerdo con la propiedad que pasa por indicando el cambio de posición en la pantalla del mouse.
Para que este ejemplo funcione como se esperaba, debe colocarse en un 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
-- Restablecer la cámara de vuelta a CFrame y FieldOfView antes de 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 la cámara sea cambiada por el script
camera.CameraType = Enum.CameraType.Scriptable
-- Almacenar las propiedades de la cámara antes de hacer zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Cámara de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Bloquear y ralentizar el mouse
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Restablecer ángulos de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Alternar zoom de la cámara/des zoom
local function MouseClick()
if zoomed then
-- Desenfoquear cámara
ResetCamera()
else
-- Zoom en la cámara
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- cualquier cosa más alta haría que buscar hacia arriba y hacia abajo fuera más difícil; recomiende cualquier cosa entre 0~1
local smoothness = 0.05 -- recomendar cualquier cosa 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
Contiene un Enum.KeyCode enumerado que describe qué tipo de entrada se utilizó.Para tipos de entrada como el teclado, esto describe qué tecla se presionó.Para las entradas como el ratón, esto no proporciona información adicional.
Enumeraciones
<th>Valor</th><th>Descripción</th></tr></thead><tr><td><b>Desconocido</b></td><td>0</td><td /></tr><tr><td><b>Retroceso</b></td><td>8</td><td /></tr><tr><td><b>Etiqueta</b></td><td>9</td><td /></tr><tr><td><b>Limpiar</b></td><td>12</td><td /></tr><tr><td><b>Regresar</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>Espacio</b></td><td>32</td><td /></tr><tr><td><b>Cuadruple citado</b></td><td>34</td><td /></tr><tr><td><b>Criptografía</b></td><td>35</td><td /></tr><tr><td><b>Dólar</b></td><td>36</td><td /></tr><tr><td><b>Porcentaje</b></td><td>37</td><td /></tr><tr><td><b>Ampersand</b></td><td>38</td><td /></tr><tr><td><b>Cotización</b></td><td>39</td><td /></tr><tr><td><b>Parentesis izquierdo</b></td><td>40</td><td /></tr><tr><td><b>Parentesis derecha</b></td><td>41</td><td /></tr><tr><td><b>Asterisco</b></td><td>42</td><td /></tr><tr><td><b>Más</b></td><td>43</td><td /></tr><tr><td><b>Coma</b></td><td>44</td><td /></tr><tr><td><b>Menos</b></td><td>45</td><td /></tr><tr><td><b>Periodo</b></td><td>46</td><td /></tr><tr><td><b>Cortar</b></td><td>47</td><td /></tr><tr><td><b>Cero</b></td><td>48</td><td /></tr><tr><td><b>Uno</b></td><td>49</td><td /></tr><tr><td><b>Dos</b></td><td>50</td><td /></tr><tr><td><b>Tres</b></td><td>51</td><td /></tr><tr><td><b>Cuatro</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>Siete</b></td><td>55</td><td /></tr><tr><td><b>Ocho</b></td><td>56</td><td /></tr><tr><td><b>Nueve</b></td><td>57</td><td /></tr><tr><td><b>Colón</b></td><td>58</td><td /></tr><tr><td><b>Semicolón</b></td><td>59</td><td /></tr><tr><td><b>Menos de</b></td><td>60</td><td /></tr><tr><td><b>Equivalente a</b></td><td>61</td><td /></tr><tr><td><b>Mayores que</b></td><td>62</td><td /></tr><tr><td><b>Pregunta</b></td><td>63</td><td /></tr><tr><td><b>At</b></td><td>64</td><td /></tr><tr><td><b>Bracket izquierdo</b></td><td>91</td><td /></tr><tr><td><b>Retroceso</b></td><td>92</td><td /></tr><tr><td><b>Brazo derecho</b></td><td>93</td><td /></tr><tr><td><b>Cuidado</b></td><td>94</td><td /></tr><tr><td><b>Sobrealiménto</b></td><td>95</td><td /></tr><tr><td><b>Cita de espalda</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>IzquierdaCurly</b></td><td>123</td><td /></tr><tr><td><b>Tubería</b></td><td>124</td><td /></tr><tr><td><b>Derecha rizada</b></td><td>125</td><td /></tr><tr><td><b>Tilde</b></td><td>126</td><td /></tr><tr><td><b>Eliminar</b></td><td>127</td><td /></tr><tr><td><b>Teclado cero</b></td><td>256</td><td /></tr><tr><td><b>Teclado uno</b></td><td>257</td><td /></tr><tr><td><b>Panel de teclas dos</b></td><td>258</td><td /></tr><tr><td><b>Teclado tres</b></td><td>259</td><td /></tr><tr><td><b>Teclado cuatro</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>TecladoSiete</b></td><td>263</td><td /></tr><tr><td><b>Teclado ocho</b></td><td>264</td><td /></tr><tr><td><b>TecladoNueve</b></td><td>265</td><td /></tr><tr><td><b>Período de teclado</b></td><td>266</td><td /></tr><tr><td><b>División 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>Panel de teclasPlus</b></td><td>270</td><td /></tr><tr><td><b>TecladoEntrar</b></td><td>271</td><td /></tr><tr><td><b>Teclado igual a</b></td><td>272</td><td /></tr><tr><td><b>Up</b></td><td>273</td><td /></tr><tr><td><b>Abajo</b></td><td>274</td><td /></tr><tr><td><b>Derecha</b></td><td>275</td><td /></tr><tr><td><b>Izquierda</b></td><td>276</td><td /></tr><tr><td><b>Insertar</b></td><td>277</td><td /></tr><tr><td><b>Inicio</b></td><td>278</td><td /></tr><tr><td><b>Fin</b></td><td>279</td><td /></tr><tr><td><b>Página superior</b></td><td>280</td><td /></tr><tr><td><b>Página hacia abajo</b></td><td>281</td><td /></tr><tr><td><b>Mayús izquierdo</b></td><td>304</td><td /></tr><tr><td><b>Mayús derecho</b></td><td>303</td><td /></tr><tr><td><b>Meta izquierda</b></td><td>310</td><td /></tr><tr><td><b>Meta derecha</b></td><td>309</td><td /></tr><tr><td><b>Alt izquierdo</b></td><td>308</td><td /></tr><tr><td><b>Alt derecho</b></td><td>307</td><td /></tr><tr><td><b>Control izquierdo</b></td><td>306</td><td /></tr><tr><td><b>Control derecho</b></td><td>305</td><td /></tr><tr><td><b>Bloqueo de mayúsculas</b></td><td>301</td><td /></tr><tr><td><b>Bloqueo numérico</b></td><td>300</td><td /></tr><tr><td><b>Bloqueo de desplazamiento</b></td><td>302</td><td /></tr><tr><td><b>Superior izquierdo</b></td><td>311</td><td /></tr><tr><td><b>Superderecha</b></td><td>312</td><td /></tr><tr><td><b>Modo</b></td><td>313</td><td /></tr><tr><td><b>Composición</b></td><td>314</td><td /></tr><tr><td><b>Ayuda</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>Rompimiento</b></td><td>318</td><td /></tr><tr><td><b>Menú</b></td><td>319</td><td /></tr><tr><td><b>Potencia</b></td><td>320</td><td /></tr><tr><td><b>Euro</b></td><td>321</td><td /></tr><tr><td><b>Deshacer</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>World43</b></td><td>203</td><td /></tr><tr><td><b>World44</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>World47</b></td><td>207</td><td /></tr><tr><td><b>Mundo48</b></td><td>208</td><td /></tr><tr><td><b>World49</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>World55</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>World61</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>World65</b></td><td>225</td><td /></tr><tr><td><b>World66</b></td><td>226</td><td /></tr><tr><td><b>Mundo67</b></td><td>227</td><td /></tr><tr><td><b>World68</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>World74</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>World78</b></td><td>238</td><td /></tr><tr><td><b>World79</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>World84</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ónX</b></td><td>1000</td><td /></tr><tr><td><b>BotónY</b></td><td>1001</td><td /></tr><tr><td><b>BotónA</b></td><td>1002</td><td /></tr><tr><td><b>BotónB</b></td><td>1003</td><td /></tr><tr><td><b>BotónR1</b></td><td>1004</td><td /></tr><tr><td><b>BotónL1</b></td><td>1005</td><td /></tr><tr><td><b>BotónR2</b></td><td>1006</td><td /></tr><tr><td><b>BotónL2</b></td><td>1007</td><td /></tr><tr><td><b>BotónR3</b></td><td>1008</td><td /></tr><tr><td><b>BotónL3</b></td><td>1009</td><td /></tr><tr><td><b>Botón de inicio</b></td><td>1010</td><td /></tr><tr><td><b>Botón de selección</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>DPadAbajo</b></td><td>1015</td><td /></tr><tr><td><b>Palanca de palmas1</b></td><td>1016</td><td /></tr><tr><td><b>Palanca de muelle2</b></td><td>1017</td></tr>
Nombre |
---|
Vea también:
Muestras de código
Este ejemplo obtiene una lista de gamepads de navegación y una lista de sus soportados Enum.KeyCodes.Entonces, itera a través de la lista de códigos de clave admitidos y vincula las teclas ButtonX y X a funciones si son admitidas por un gamepad usando el 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
-- Dado que esta función no devuelve nada, este manipulador devolverá
-- ""drenar'' la entrada y no se llamarán a otros manipuladores de acción después
-- esta.
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
Esta propiedad describe un valor posicional de Vector3 de esta entrada.
Para la entrada del ratón y el toque, esta es la posición de la pantalla del ratón/toque, descrita en los componentes X y Y.El inserto aplicado a los elementos de la interfaz de usuario (como de la barra superior) se tiene en cuenta en la posición.
Para la entrada del ratón, el componente Z describe si la rueda se movió hacia adelante (1), hacia atrás (-1) o no en absoluto (0).
Para la entrada Enum.KeyCode , esto indica la posición del jugador Mouse .
Tenga en cuenta que un InputObject correspondiente a Enum.UserInputType.MouseButton1 (hcer clicizquierdo) y Enum.UserInputType.MouseButton2 (hcer clicderecho) suministrado desde un InputBegan llamada de devolución no tendrá su Delta o Position actualizado una vez creado, excepto cuando la entrada del mouse termina.Para obtener posiciones actualizadas para las entradas del mouse, debes referenciar un InputObject desde una llamada de devolución InputChanged o llamar GetMouseLocation() .Sin embargo, cualquier InputObjects correspondiente a las entradas de toque tendrá su delta y posición actualizados en cada marco a lo largo de su vida útil.
Véase también
Muestras de código
El siguiente ejemplo muestra uno de los muchos ejemplos de uso de manejar la entrada del usuario desde InputBegan dependiendo de su tipo.
-- Para utilizar el evento InputBegan, se debe utilizar el servicio UserInputService
local UserInputService = game:GetService("UserInputService")
-- Una función de muestra que proporciona múltiples casos de uso para varios tipos de entrada de usuario
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 de usuario describe el estado de una entrada que se está realizando, después de un flujo específico dependiendo del >.Utiliza el enumerado del mismo nombre, Enum.UserInputState .Vea la página de enumeración para obtener una lista de todos los valores posibles para esta propiedad.
Vea también:
Muestras de código
Este ejemplo obtiene una lista de gamepads de navegación y una lista de sus soportados Enum.KeyCodes.Entonces, itera a través de la lista de códigos de clave admitidos y vincula las teclas ButtonX y X a funciones si son admitidas por un gamepad usando el 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
-- Dado que esta función no devuelve nada, este manipulador devolverá
-- ""drenar'' la entrada y no se llamarán a otros manipuladores de acción después
-- esta.
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 de usuario es una propiedad que describe para qué tipo de entrada representa este InputObject, como entrada de ratón, teclado, toque o gamepad.Utiliza el enumerado del mismo nombre, Enum.UserInputType .Vea la página de enumeración para obtener una lista de todos los valores posibles para esta propiedad.
Vea también:
Muestras de código
El siguiente ejemplo muestra uno de los muchos ejemplos de uso de manejar la entrada del usuario desde InputBegan dependiendo de su tipo.
-- Para utilizar el evento InputBegan, se debe utilizar el servicio UserInputService
local UserInputService = game:GetService("UserInputService")
-- Una función de muestra que proporciona múltiples casos de uso para varios tipos de entrada de usuario
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)