InputObject
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Un objet d'entrée représente une seule entrée d'un utilisateur, comme le mouvement de la souris, les touches, les presses de clé et plus encore. Il est créé lorsqu'une entrée commence.
Les propriétés de cet objet varient selon le UserInputType.Chaque type d'entrée subira diverses modifications de son UserInputState .Pendant la durée de vie d'une entrée, d'autres propriétés qui décrivent davantage l'entrée peuvent changer, telles que Position et Delta .Les presses de boutons de clavier et de manette de jeu auront la propriété KeyCode configurer.
Une fois créé au début d'une entrée, le même objet persiste et est mis à jour jusqu'à la fin de l'entrée.Par resultats, vous pouvez suivre les modifications de l'objet en utilisant l'événement Changed lorsque l'utilisateur modifie l'entrée en question.Vous pouvez également placer ces objets dans une liste de pistes d'entrée actives et interagir avec l'objet après sa création par un événement tel que UserInputService.InputBegan .Cela est principalement utile pour les événements tactiles, car chaque point de contact aura un objet d'entrée séparé.
Voir aussi :
- ContextActionService , qui transmet un objet d'entrée à bound fonctions de traitement d'action
- UserInputService , dont les événements et les fonctions utilisent souvent InputObject
- GuiObject , dont les événements liés à l'entrée de l'utilisateur utilisent InputObject
Échantillons de code
L'exemple suivant montre l'un des nombreux exemples d'utilisation de la gestion de l'entrée utilisateur à partir de InputBegan en fonction de son type.
-- Pour utiliser l'événement InputBegan, le service UserInputService doit être utilisé
local UserInputService = game:GetService("UserInputService")
-- Une fonction d'échantillon fournissant plusieurs cas d'utilisation pour différents types d'entrée utilisateur
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)
Résumé
Propriétés
Un Vector3 décrivant le delta entre les mouvements de la souris/joystick.
Contient un Enum qui décrit le type d'entrée utilisé.
Définit une valeur positionnelle de cette entrée.
Décrit l'état d'une entrée effectuée, suivant un flux spécifique en fonction du UserInputType.
Décrit le type d'entrée effectuée (souris, clavier, manette de jeu, toucher, etc.).
Méthodes
Propriétés
Delta
A Vector3 décrivant le Delta (changement) entre les mouvements de la souris/joystick.
Cela est utile lorsqu'il est utilisé avec l'entrée position de la souris/joystick de l'utilisateur pour suivre la position et le mouvement de la souris/joystick de l'utilisateur, comme lorsque vous créez des scripts de mouvement ou de caméra personnalisés.Considérez le suivi des modifications d'objets d'entrée en utilisant l'événement Object.Changed ou lorsque l'utilisateur modifie les entrées via des événements tels que UserInputService.InputChanged et GuiObject.InputChanged .
Notez qu'un correspondant à (cliquergauche) et (cliquerdroit) fourni à partir d'un rappel ou mis à jour une fois créé, sauf lorsque l'entrée de la souris se termine.Pour obtenir des délestages mis à jour pour les entrées de souris, vous devez plutôt faire référence à un InputObject à partir d'un rappel InputChanged ou appeler GetMouseDelta() .Cependant, tout InputObjects correspondant aux entrées de toucher aura son delta et sa position mises à jour à chaque cadre tout au long de sa vie.
Voir aussi :
Échantillons de code
Cet exemple crée un script de binocules qui diminue les clics de souris du joueur FieldOfView() et MouseDeltaSensitivity() lorsqu'un joueur avec un MouseEnabled() a quitté les clics de souris.Le script pointe également la position du monde de la souris vers la position du clic de la souris.
Lorsque le joueur quitte à nouveau les clics de souris, la caméra du joueur revient à la valeur par défaut Enum.CameraType avec le même champ de vision et CFrame() comme avant que le joueur n'ait zoomé avec le script.
Pendant que le joueur utilise les binocules, le script verrouille la souris du joueur au centre de l'écran en définissant la souris du joueur sur MouseBehavior() pour verrouiller le centre.La caméra du joueur se déplace lorsque le joueur déplace sa souris selon la propriété indiquant le changement de position de l'écran de la souris.
Pour que cet exemple fonctionne comme prévu, il doit être placé dans 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
-- Réinitialiser la caméra à CFrame et FieldOfView avant le 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()
-- Permettre à la caméra d'être modifiée par le script
camera.CameraType = Enum.CameraType.Scriptable
-- Stocker les propriétés de la caméra avant le zoom
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Caméra de zoom
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Verrouiller et ralentir la souris
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Réinitialiser les angles de zoom
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Basculer le zoom/dézoomer de la caméra
local function MouseClick()
if zoomed then
-- Dézoomer la caméra
ResetCamera()
else
-- Zoomer dans la caméra
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- tout ce qui est supérieur rendrait la recherche vers le haut et le bas plus difficile ; recommandez tout entre 0~1
local smoothness = 0.05 -- recommander n'importe quoi 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
Contient un Enum.KeyCode enum qui décrit le type d'entrée utilisé.Pour les types d'entrée comme le clavier, cela décrit quelle touche a été pressée.Pour les entrées comme la souris, cela ne fournit pas d'informations supplémentaires.
Enums
<th>Valeur</th><th>Avertissement</th></tr></thead><tr><td><b>Inconnu</b></td><td>0</td><td /></tr><tr><td><b>Retour arrière</b></td><td>8</td><td /></tr><tr><td><b>Rubrique</b></td><td>9</td><td /></tr><tr><td><b>Effacer</b></td><td>12</td><td /></tr><tr><td><b>Retour</b></td><td>13</td><td /></tr><tr><td><b>Pause</b></td><td>19</td><td /></tr><tr><td><b>Échapper</b></td><td>27</td><td /></tr><tr><td><b>Espace</b></td><td>32</td><td /></tr><tr><td><b>Cité double</b></td><td>34</td><td /></tr><tr><td><b>Chaîne</b></td><td>35</td><td /></tr><tr><td><b>Dollar</b></td><td>36</td><td /></tr><tr><td><b>Pourcentage</b></td><td>37</td><td /></tr><tr><td><b>Ampérand</b></td><td>38</td><td /></tr><tr><td><b>Citation</b></td><td>39</td><td /></tr><tr><td><b>Parentèse gauche</b></td><td>40</td><td /></tr><tr><td><b>Parentèse droite</b></td><td>41</td><td /></tr><tr><td><b>Asterisk</b></td><td>42</td><td /></tr><tr><td><b>Plus</b></td><td>43</td><td /></tr><tr><td><b>Commande</b></td><td>44</td><td /></tr><tr><td><b>Moins</b></td><td>45</td><td /></tr><tr><td><b>Période</b></td><td>46</td><td /></tr><tr><td><b>Coupe</b></td><td>47</td><td /></tr><tr><td><b>Zéro</b></td><td>48</td><td /></tr><tr><td><b>Un seul</b></td><td>49</td><td /></tr><tr><td><b>Deux</b></td><td>50</td><td /></tr><tr><td><b>Trois</b></td><td>51</td><td /></tr><tr><td><b>Quatre</b></td><td>52</td><td /></tr><tr><td><b>Cinq</b></td><td>53</td><td /></tr><tr><td><b>Seulement six</b></td><td>54</td><td /></tr><tr><td><b>Sept</b></td><td>55</td><td /></tr><tr><td><b>Huit</b></td><td>56</td><td /></tr><tr><td><b>Neuf</b></td><td>57</td><td /></tr><tr><td><b>Colon</b></td><td>58</td><td /></tr><tr><td><b>Point-virgule</b></td><td>59</td><td /></tr><tr><td><b>Moins de</b></td><td>60</td><td /></tr><tr><td><b>Égale</b></td><td>61</td><td /></tr><tr><td><b>Plus grand que</b></td><td>62</td><td /></tr><tr><td><b>Question</b></td><td>63</td><td /></tr><tr><td><b>At</b></td><td>64</td><td /></tr><tr><td><b>Coin gauche</b></td><td>91</td><td /></tr><tr><td><b>Retour arrière</b></td><td>92</td><td /></tr><tr><td><b>Coin droit</b></td><td>93</td><td /></tr><tr><td><b>Soin</b></td><td>94</td><td /></tr><tr><td><b>Soulignure</b></td><td>95</td><td /></tr><tr><td><b>Guillemet arrière</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>Cheveux gauche</b></td><td>123</td><td /></tr><tr><td><b>Tuyau</b></td><td>124</td><td /></tr><tr><td><b>DroiteCourbée</b></td><td>125</td><td /></tr><tr><td><b>Tylique</b></td><td>126</td><td /></tr><tr><td><b>Supprimer</b></td><td>127</td><td /></tr><tr><td><b>Clavier zéro</b></td><td>256</td><td /></tr><tr><td><b>ClavierOne</b></td><td>257</td><td /></tr><tr><td><b>Clavier deux</b></td><td>258</td><td /></tr><tr><td><b>Clavier trois</b></td><td>259</td><td /></tr><tr><td><b>ClavierFour</b></td><td>260</td><td /></tr><tr><td><b>ClavierFive</b></td><td>261</td><td /></tr><tr><td><b>ClavierSix</b></td><td>262</td><td /></tr><tr><td><b>ClavierSeven</b></td><td>263</td><td /></tr><tr><td><b>Clavier huit</b></td><td>264</td><td /></tr><tr><td><b>Clavier neuf</b></td><td>265</td><td /></tr><tr><td><b>Période de clavier</b></td><td>266</td><td /></tr><tr><td><b>Diviser le clavier</b></td><td>267</td><td /></tr><tr><td><b>Clavier multiplié</b></td><td>268</td><td /></tr><tr><td><b>ClavierMoins</b></td><td>269</td><td /></tr><tr><td><b>Clavier plus</b></td><td>270</td><td /></tr><tr><td><b>ClavierEntrer</b></td><td>271</td><td /></tr><tr><td><b>ClavierEquals</b></td><td>272</td><td /></tr><tr><td><b>Up</b></td><td>273</td><td /></tr><tr><td><b>Vers le bas</b></td><td>274</td><td /></tr><tr><td><b>Droite</b></td><td>275</td><td /></tr><tr><td><b>Gauche</b></td><td>276</td><td /></tr><tr><td><b>Insérer</b></td><td>277</td><td /></tr><tr><td><b>Accueil</b></td><td>278</td><td /></tr><tr><td><b>Fin</b></td><td>279</td><td /></tr><tr><td><b>PageSupérieur</b></td><td>280</td><td /></tr><tr><td><b>Vers le bas de la page</b></td><td>281</td><td /></tr><tr><td><b>Majuscule gauche</b></td><td>304</td><td /></tr><tr><td><b>Majuscule droit</b></td><td>303</td><td /></tr><tr><td><b>Meta gauche</b></td><td>310</td><td /></tr><tr><td><b>Métamètre droit</b></td><td>309</td><td /></tr><tr><td><b>Alt gauche</b></td><td>308</td><td /></tr><tr><td><b>Alt droit</b></td><td>307</td><td /></tr><tr><td><b>Contrôle gauche</b></td><td>306</td><td /></tr><tr><td><b>Contrôle droit</b></td><td>305</td><td /></tr><tr><td><b>Verrouillage de Capsule</b></td><td>301</td><td /></tr><tr><td><b>Verrouillage numérique</b></td><td>300</td><td /></tr><tr><td><b>Verrouillage de défilement</b></td><td>302</td><td /></tr><tr><td><b>Super gauche</b></td><td>311</td><td /></tr><tr><td><b>Super droite</b></td><td>312</td><td /></tr><tr><td><b>Mode</b></td><td>313</td><td /></tr><tr><td><b>Composer</b></td><td>314</td><td /></tr><tr><td><b>Aide</b></td><td>315</td><td /></tr><tr><td><b>Imprimer</b></td><td>316</td><td /></tr><tr><td><b>SysReq</b></td><td>317</td><td /></tr><tr><td><b>Éclater</b></td><td>318</td><td /></tr><tr><td><b>Menu</b></td><td>319</td><td /></tr><tr><td><b>Puissance</b></td><td>320</td><td /></tr><tr><td><b>Euro</b></td><td>321</td><td /></tr><tr><td><b>Retourner</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>Monde0</b></td><td>160</td><td /></tr><tr><td><b>Monde1</b></td><td>161</td><td /></tr><tr><td><b>Monde2</b></td><td>162</td><td /></tr><tr><td><b>Monde3</b></td><td>163</td><td /></tr><tr><td><b>Monde4</b></td><td>164</td><td /></tr><tr><td><b>Monde5</b></td><td>165</td><td /></tr><tr><td><b>Monde6</b></td><td>166</td><td /></tr><tr><td><b>Monde7</b></td><td>167</td><td /></tr><tr><td><b>Monde8</b></td><td>168</td><td /></tr><tr><td><b>Monde9</b></td><td>169</td><td /></tr><tr><td><b>Monde10</b></td><td>170</td><td /></tr><tr><td><b>Monde11</b></td><td>171</td><td /></tr><tr><td><b>Monde12</b></td><td>172</td><td /></tr><tr><td><b>Monde13</b></td><td>173</td><td /></tr><tr><td><b>Monde14</b></td><td>174</td><td /></tr><tr><td><b>Monde15</b></td><td>175</td><td /></tr><tr><td><b>Mondiale16</b></td><td>176</td><td /></tr><tr><td><b>Monde17</b></td><td>177</td><td /></tr><tr><td><b>Monde18</b></td><td>178</td><td /></tr><tr><td><b>Monde19</b></td><td>179</td><td /></tr><tr><td><b>Monde20</b></td><td>180</td><td /></tr><tr><td><b>Mondiale21</b></td><td>181</td><td /></tr><tr><td><b>Monde22</b></td><td>182</td><td /></tr><tr><td><b>Monde23</b></td><td>183</td><td /></tr><tr><td><b>World24</b></td><td>184</td><td /></tr><tr><td><b>Monde25</b></td><td>185</td><td /></tr><tr><td><b>Monde26</b></td><td>186</td><td /></tr><tr><td><b>Mondiale27</b></td><td>187</td><td /></tr><tr><td><b>Monde28</b></td><td>188</td><td /></tr><tr><td><b>Monde29</b></td><td>189</td><td /></tr><tr><td><b>World30</b></td><td>190</td><td /></tr><tr><td><b>Monde31</b></td><td>191</td><td /></tr><tr><td><b>Mondiale32</b></td><td>192</td><td /></tr><tr><td><b>Monde33</b></td><td>193</td><td /></tr><tr><td><b>Monde34</b></td><td>194</td><td /></tr><tr><td><b>Monde35</b></td><td>195</td><td /></tr><tr><td><b>Monde36</b></td><td>196</td><td /></tr><tr><td><b>Monde37</b></td><td>197</td><td /></tr><tr><td><b>Monde38</b></td><td>198</td><td /></tr><tr><td><b>Monde39</b></td><td>199</td><td /></tr><tr><td><b>World40</b></td><td>200</td><td /></tr><tr><td><b>Mondiale41</b></td><td>201</td><td /></tr><tr><td><b>Mondiale42</b></td><td>202</td><td /></tr><tr><td><b>World43</b></td><td>203</td><td /></tr><tr><td><b>Mondiale44</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>Mondiale47</b></td><td>207</td><td /></tr><tr><td><b>Mondiale48</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>Monde56</b></td><td>216</td><td /></tr><tr><td><b>Monde57</b></td><td>217</td><td /></tr><tr><td><b>Monde58</b></td><td>218</td><td /></tr><tr><td><b>Monde59</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>Mondiale70</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>Mondiale75</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>Monde91</b></td><td>251</td><td /></tr><tr><td><b>World92</b></td><td>252</td><td /></tr><tr><td><b>Monde93</b></td><td>253</td><td /></tr><tr><td><b>World94</b></td><td>254</td><td /></tr><tr><td><b>Monde95</b></td><td>255</td><td /></tr><tr><td><b>BoutonX</b></td><td>1000</td><td /></tr><tr><td><b>BoutonY</b></td><td>1001</td><td /></tr><tr><td><b>BoutonA</b></td><td>1002</td><td /></tr><tr><td><b>BoutonB</b></td><td>1003</td><td /></tr><tr><td><b>BoutonR1</b></td><td>1004</td><td /></tr><tr><td><b>BoutonL1</b></td><td>1005</td><td /></tr><tr><td><b>BoutonR2</b></td><td>1006</td><td /></tr><tr><td><b>BoutonL2</b></td><td>1007</td><td /></tr><tr><td><b>BoutonR3</b></td><td>1008</td><td /></tr><tr><td><b>BoutonL3</b></td><td>1009</td><td /></tr><tr><td><b>Bouton de démarrage</b></td><td>1010</td><td /></tr><tr><td><b>Bouton sélectionner</b></td><td>1011</td><td /></tr><tr><td><b>Bouton DPadGauche</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>Bâton de pouce1</b></td><td>1016</td><td /></tr><tr><td><b>Bâton de pouce2</b></td><td>1017</td></tr>
Nom |
---|
Voir aussi :
Échantillons de code
Cet exemple obtient une liste de manettes de navigation et une liste de leurs supports Enum.KeyCodes.Ensuite, il itère à travers la liste de code clé soutenue et lie les touches ButtonX et X aux fonctions si elles sont prises en charge par une manette de jeu en utilisant le 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
-- Puisque cette fonction ne renvoie rien, ce gestionnaire va
-- « couler » l'entrée et aucun autre gestionnaire d'action ne sera appelé après
-- celui-ci.
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
Cette propriété décrit une valeur positionnelle Vector3 de cette entrée.
Pour l'entrée souris et tactile, c'est la position de l'écran de la souris/du toucher, décrite dans les composants X et Y.L'insertion appliquée aux éléments GUI (tels que de la barre supérieure) est prise en compte dans la position.
Pour l'entrée de la molette de la souris, la composante Z décrit si la roue a été déplacée vers l'avant (1), vers l'arrière (-1) ou pas du tout (0).
Pour l'entrée Enum.KeyCode, cela indique la position du joueur Mouse.
Notez qu'un correspondant à (cliquergauche) et (cliquerdroit) fourni à partir d'un rappel ou mis à jour une fois créé, sauf lorsque l'entrée de la souris se termine.Pour obtenir des positions mises à jour pour les entrées de souris, vous devez plutôt faire référence à un InputObject à partir d'un rappel InputChanged ou appeler GetMouseLocation() .Cependant, tout InputObjects correspondant aux entrées de toucher aura son delta et sa position mises à jour à chaque cadre tout au long de sa vie.
Voir aussi
Échantillons de code
L'exemple suivant montre l'un des nombreux exemples d'utilisation de la gestion de l'entrée utilisateur à partir de InputBegan en fonction de son type.
-- Pour utiliser l'événement InputBegan, le service UserInputService doit être utilisé
local UserInputService = game:GetService("UserInputService")
-- Une fonction d'échantillon fournissant plusieurs cas d'utilisation pour différents types d'entrée utilisateur
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
État d'entrée de l'utilisateur décrit l'état d'une entrée effectuée, suivant un flux spécifique en fonction du UserInputType.Il utilise l'enum du même nom, Enum.UserInputState .Voir la page enum pour une liste de toutes les valeurs possibles pour cette propriété.
Voir aussi :
Échantillons de code
Cet exemple obtient une liste de manettes de navigation et une liste de leurs supports Enum.KeyCodes.Ensuite, il itère à travers la liste de code clé soutenue et lie les touches ButtonX et X aux fonctions si elles sont prises en charge par une manette de jeu en utilisant le 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
-- Puisque cette fonction ne renvoie rien, ce gestionnaire va
-- « couler » l'entrée et aucun autre gestionnaire d'action ne sera appelé après
-- celui-ci.
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
UserInputType est une propriété qui décrit le type d'entrée que représente cette InputObject telle que la souris, le clavier, l'entrée tactile ou le gamepad.Il utilise l'enum du même nom, Enum.UserInputType .Voir la page enum pour une liste de toutes les valeurs possibles pour cette propriété.
Voir aussi :
Échantillons de code
L'exemple suivant montre l'un des nombreux exemples d'utilisation de la gestion de l'entrée utilisateur à partir de InputBegan en fonction de son type.
-- Pour utiliser l'événement InputBegan, le service UserInputService doit être utilisé
local UserInputService = game:GetService("UserInputService")
-- Une fonction d'échantillon fournissant plusieurs cas d'utilisation pour différents types d'entrée utilisateur
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)