一个 输入对象 代表单个用户输入,例如鼠标移动、触摸、按键操作等。当输入开始时创建。
该对象的属性根据 UserInputType 会有所不同。每种输入都会经历各种变化,以其 UserInputState 。在输入的使用期间,其他进一步描述输入的属性可能会更改,例如 Position 和 Delta 。键盘和游戏手柄按钮将具有 KeyCode 属性设置。
在输入开始之前创建一次,同一个对象存在并更新直到输入结束。因结果,您可以使用 Changed 事件跟踪对象的更改,因为用户在问题的输入更改时。您还可以将这些对象放入激活输入列表,并在创建后通过事件 such as UserInputService.InputBegan 与对象进行交互。这主要对触摸事件有用,因为每个触摸点都会有一个独立的输入对象。
还见:
- ContextActionService , 这将传递一个输入对象到 bound 操作处理函数
- UserInputService ,其事件和功能经常使用输入对象
- GuiObject ,其事件与用户输入相关的使用输入对象
概要
属性
描述鼠标/手柄移动之间差异的 Vector3。
包含一个枚数,描述使用的输入类型。
描述了这个输入的位置值。
描述输入正在执行的状态,根据 UserInputType 进行特定流程。
描述正在执行的输入类型(鼠标、键盘、游戏手柄、触摸等)。
属性
Delta
描述鼠标/手柄移动之间的差异(更改)的 Vector3 。
当与输入的 position 一起使用时,这有助于跟踪用户的鼠标/手柄的位置和移动,例如当你正在创建自定义移动或相机脚本时。考虑使用 Object.Changed 事件跟踪输入对象更改或当用户通过事件如 UserInputService.InputChanged 和 GuiObject.InputChanged 输入更改时。
请注意,一个对应于 (左键点击) 和 (右键点击) 从回调中提供的 (左键点击) 和 (右键点按) 在创建后不会更新,除了鼠标输入结束时。为了获取鼠标输入的更新差异,你必须使用 InputObject 从 InputChanged 回调中引用,或调用 GetMouseDelta() 。然而,任何与触摸输入相对应的 InputObjects 将在其生命周期内每一帧更新其差异和位置。
还见:
代码示例
这个例子创建了一个望远镜脚本,降低玩家的 FieldOfView() 和 MouseDeltaSensitivity() 当玩家使用具有 MouseEnabled() 的鼠标点击时。该脚本还指向玩家的 向鼠标单击的世界位置。
当玩家再次离开鼠标点击时,玩家的相机返回到与玩家使用脚本时相同的视野和 领域。
当玩家使用望远镜时,脚本通过设置玩家的 MouseBehavior() 到锁定中心来锁定玩家的鼠标到屏幕中心。当玩家移动鼠标时,按照传递给 InputObject.Delta 的 InputChanged() 属性移动相机,表示玩家在屏幕位置上更改了鼠标的 Vector2 。
为了这个例子按期望的方式运行,它应该放置在 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
-- 将相机重置为 CFrame 和 FieldOfView,在缩放之前
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()
-- 允许通过脚本更改相机
camera.CameraType = Enum.CameraType.Scriptable
-- 在缩放之前存储相机属性
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- 缩放相机
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- 锁定并减慢鼠标
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- 重置缩放角度
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- 切换镜头缩放/取消缩放
local function MouseClick()
if zoomed then
-- 缩放相机
ResetCamera()
else
-- 在相机放大
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- 任何高于此的数值都会使查找上下更加困难;推荐在 0~1 之间的数值
local smoothness = 0.05 -- 推荐在 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
包含一个 Enum.KeyCode 枚列,描述使用了哪种输入。对于像键盘这样的输入类型,这描述了按下了哪个键。对于像鼠标这样的输入,这不提供额外信息。
枚数
<th>值</th><th>描述</th></tr></thead><tr><td><b>未知</b></td><td>0</td><td /></tr><tr><td><b>返回键</b></td><td>8</td><td /></tr><tr><td><b>标签</b></td><td>9</td><td /></tr><tr><td><b>清除</b></td><td>12</td><td /></tr><tr><td><b>返回</b></td><td>13</td><td /></tr><tr><td><b>暂停</b></td><td>19</td><td /></tr><tr><td><b>逃脱</b></td><td>27</td><td /></tr><tr><td><b>空间</b></td><td>32</td><td /></tr><tr><td><b>引用双倍</b></td><td>34</td><td /></tr><tr><td><b>哈希</b></td><td>35</td><td /></tr><tr><td><b>美元</b></td><td>36</td><td /></tr><tr><td><b>百分比</b></td><td>37</td><td /></tr><tr><td><b>扰流板</b></td><td>38</td><td /></tr><tr><td><b>引用</b></td><td>39</td><td /></tr><tr><td><b>左括号</b></td><td>40</td><td /></tr><tr><td><b>右括号</b></td><td>41</td><td /></tr><tr><td><b>星号</b></td><td>42</td><td /></tr><tr><td><b>加</b></td><td>43</td><td /></tr><tr><td><b>逗号</b></td><td>44</td><td /></tr><tr><td><b>减</b></td><td>45</td><td /></tr><tr><td><b>期间</b></td><td>46</td><td /></tr><tr><td><b>切割</b></td><td>47</td><td /></tr><tr><td><b>零</b></td><td>48</td><td /></tr><tr><td><b>一个</b></td><td>49</td><td /></tr><tr><td><b>两个</b></td><td>50</td><td /></tr><tr><td><b>三</b></td><td>51</td><td /></tr><tr><td><b>四个</b></td><td>52</td><td /></tr><tr><td><b>五</b></td><td>53</td><td /></tr><tr><td><b>六</b></td><td>54</td><td /></tr><tr><td><b>七</b></td><td>55</td><td /></tr><tr><td><b>八</b></td><td>56</td><td /></tr><tr><td><b>九</b></td><td>57</td><td /></tr><tr><td><b>撇号</b></td><td>58</td><td /></tr><tr><td><b>分号</b></td><td>59</td><td /></tr><tr><td><b>小于</b></td><td>60</td><td /></tr><tr><td><b>等于</b></td><td>61</td><td /></tr><tr><td><b>大于等于</b></td><td>62</td><td /></tr><tr><td><b>问题</b></td><td>63</td><td /></tr><tr><td><b>At</b></td><td>64</td><td /></tr><tr><td><b>左括号</b></td><td>91</td><td /></tr><tr><td><b>返回斩</b></td><td>92</td><td /></tr><tr><td><b>右侧支架</b></td><td>93</td><td /></tr><tr><td><b>护理</b></td><td>94</td><td /></tr><tr><td><b>下划线</b></td><td>95</td><td /></tr><tr><td><b>引用符</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>左捲</b></td><td>123</td><td /></tr><tr><td><b>管道</b></td><td>124</td><td /></tr><tr><td><b>右捲曲</b></td><td>125</td><td /></tr><tr><td><b>tilde</b></td><td>126</td><td /></tr><tr><td><b>删除</b></td><td>127</td><td /></tr><tr><td><b>键盘零</b></td><td>256</td><td /></tr><tr><td><b>键盘一</b></td><td>257</td><td /></tr><tr><td><b>键盘二</b></td><td>258</td><td /></tr><tr><td><b>键盘三</b></td><td>259</td><td /></tr><tr><td><b>键盘Four</b></td><td>260</td><td /></tr><tr><td><b>键盘五</b></td><td>261</td><td /></tr><tr><td><b>键盘六</b></td><td>262</td><td /></tr><tr><td><b>按钮七</b></td><td>263</td><td /></tr><tr><td><b>键盘八</b></td><td>264</td><td /></tr><tr><td><b>键盘九</b></td><td>265</td><td /></tr><tr><td><b>按钮期</b></td><td>266</td><td /></tr><tr><td><b>键盘分割</b></td><td>267</td><td /></tr><tr><td><b>键盘乘法</b></td><td>268</td><td /></tr><tr><td><b>键盘减号</b></td><td>269</td><td /></tr><tr><td><b>键盘加</b></td><td>270</td><td /></tr><tr><td><b>键盘输入</b></td><td>271</td><td /></tr><tr><td><b>键盘等于</b></td><td>272</td><td /></tr><tr><td><b>Up</b></td><td>273</td><td /></tr><tr><td><b>向下</b></td><td>274</td><td /></tr><tr><td><b>右侧</b></td><td>275</td><td /></tr><tr><td><b>左</b></td><td>276</td><td /></tr><tr><td><b>插入</b></td><td>277</td><td /></tr><tr><td><b>首页</b></td><td>278</td><td /></tr><tr><td><b>结束</b></td><td>279</td><td /></tr><tr><td><b>向上页</b></td><td>280</td><td /></tr><tr><td><b>向下页面</b></td><td>281</td><td /></tr><tr><td><b>左Shift</b></td><td>304</td><td /></tr><tr><td><b>右移</b></td><td>303</td><td /></tr><tr><td><b>左元</b></td><td>310</td><td /></tr><tr><td><b>右元素</b></td><td>309</td><td /></tr><tr><td><b>左Alt</b></td><td>308</td><td /></tr><tr><td><b>RightAlt</b></td><td>307</td><td /></tr><tr><td><b>左控制</b></td><td>306</td><td /></tr><tr><td><b>右控制</b></td><td>305</td><td /></tr><tr><td><b>锁定键</b></td><td>301</td><td /></tr><tr><td><b>数字锁</b></td><td>300</td><td /></tr><tr><td><b>滚动锁</b></td><td>302</td><td /></tr><tr><td><b>左超</b></td><td>311</td><td /></tr><tr><td><b>右超级</b></td><td>312</td><td /></tr><tr><td><b>模式</b></td><td>313</td><td /></tr><tr><td><b>组合</b></td><td>314</td><td /></tr><tr><td><b>帮助</b></td><td>315</td><td /></tr><tr><td><b>打印</b></td><td>316</td><td /></tr><tr><td><b>SysReq</b></td><td>317</td><td /></tr><tr><td><b>打破</b></td><td>318</td><td /></tr><tr><td><b>菜单</b></td><td>319</td><td /></tr><tr><td><b>电力</b></td><td>320</td><td /></tr><tr><td><b>欧元</b></td><td>321</td><td /></tr><tr><td><b>撤销</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>世界0</b></td><td>160</td><td /></tr><tr><td><b>世界1</b></td><td>161</td><td /></tr><tr><td><b>世界2</b></td><td>162</td><td /></tr><tr><td><b>世界3</b></td><td>163</td><td /></tr><tr><td><b>世界4</b></td><td>164</td><td /></tr><tr><td><b>世界5</b></td><td>165</td><td /></tr><tr><td><b>世界6</b></td><td>166</td><td /></tr><tr><td><b>世界7</b></td><td>167</td><td /></tr><tr><td><b>世界8</b></td><td>168</td><td /></tr><tr><td><b>世界9</b></td><td>169</td><td /></tr><tr><td><b>世界10</b></td><td>170</td><td /></tr><tr><td><b>世界11</b></td><td>171</td><td /></tr><tr><td><b>世界12</b></td><td>172</td><td /></tr><tr><td><b>世界13</b></td><td>173</td><td /></tr><tr><td><b>世界14</b></td><td>174</td><td /></tr><tr><td><b>世界15</b></td><td>175</td><td /></tr><tr><td><b>世界16</b></td><td>176</td><td /></tr><tr><td><b>世界17</b></td><td>177</td><td /></tr><tr><td><b>世界18</b></td><td>178</td><td /></tr><tr><td><b>世界19</b></td><td>179</td><td /></tr><tr><td><b>世界20</b></td><td>180</td><td /></tr><tr><td><b>世界21</b></td><td>181</td><td /></tr><tr><td><b>世界22</b></td><td>182</td><td /></tr><tr><td><b>世界23</b></td><td>183</td><td /></tr><tr><td><b>世界24</b></td><td>184</td><td /></tr><tr><td><b>世界25</b></td><td>185</td><td /></tr><tr><td><b>世界26</b></td><td>186</td><td /></tr><tr><td><b>世界27</b></td><td>187</td><td /></tr><tr><td><b>世界28</b></td><td>188</td><td /></tr><tr><td><b>世界29</b></td><td>189</td><td /></tr><tr><td><b>世界30</b></td><td>190</td><td /></tr><tr><td><b>世界31</b></td><td>191</td><td /></tr><tr><td><b>World32</b></td><td>192</td><td /></tr><tr><td><b>世界33</b></td><td>193</td><td /></tr><tr><td><b>世界34</b></td><td>194</td><td /></tr><tr><td><b>世界35</b></td><td>195</td><td /></tr><tr><td><b>世界36</b></td><td>196</td><td /></tr><tr><td><b>世界37</b></td><td>197</td><td /></tr><tr><td><b>世界38</b></td><td>198</td><td /></tr><tr><td><b>世界39</b></td><td>199</td><td /></tr><tr><td><b>世界40</b></td><td>200</td><td /></tr><tr><td><b>世界41</b></td><td>201</td><td /></tr><tr><td><b>世界42</b></td><td>202</td><td /></tr><tr><td><b>世界43</b></td><td>203</td><td /></tr><tr><td><b>世界44</b></td><td>204</td><td /></tr><tr><td><b>世界45</b></td><td>205</td><td /></tr><tr><td><b>世界46</b></td><td>206</td><td /></tr><tr><td><b>世界47</b></td><td>207</td><td /></tr><tr><td><b>世界48</b></td><td>208</td><td /></tr><tr><td><b>世界49</b></td><td>209</td><td /></tr><tr><td><b>世界50</b></td><td>210</td><td /></tr><tr><td><b>World51</b></td><td>211</td><td /></tr><tr><td><b>世界52</b></td><td>212</td><td /></tr><tr><td><b>World53</b></td><td>213</td><td /></tr><tr><td><b>世界54</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>世界59</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>世界90</b></td><td>250</td><td /></tr><tr><td><b>World91</b></td><td>251</td><td /></tr><tr><td><b>世界92</b></td><td>252</td><td /></tr><tr><td><b>世界93</b></td><td>253</td><td /></tr><tr><td><b>世界94</b></td><td>254</td><td /></tr><tr><td><b>世界95</b></td><td>255</td><td /></tr><tr><td><b>按钮X</b></td><td>1000</td><td /></tr><tr><td><b>按钮Y</b></td><td>1001</td><td /></tr><tr><td><b>按钮A</b></td><td>1002</td><td /></tr><tr><td><b>按钮B</b></td><td>1003</td><td /></tr><tr><td><b>按钮R1</b></td><td>1004</td><td /></tr><tr><td><b>按钮L1</b></td><td>1005</td><td /></tr><tr><td><b>按钮R2</b></td><td>1006</td><td /></tr><tr><td><b>按钮L2</b></td><td>1007</td><td /></tr><tr><td><b>按钮R3</b></td><td>1008</td><td /></tr><tr><td><b>按钮L3</b></td><td>1009</td><td /></tr><tr><td><b>按钮开始</b></td><td>1010</td><td /></tr><tr><td><b>按钮选择</b></td><td>1011</td><td /></tr><tr><td><b>DPad左</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>DPad向下</b></td><td>1015</td><td /></tr><tr><td><b>拇指棒1</b></td><td>1016</td><td /></tr><tr><td><b>拇指棒2</b></td><td>1017</td></tr>
名称 |
---|
还见:
代码示例
这个例子获取一个列表的导航游戏板和一个列表支持的Enum.KeyCodes。然后,它循环通过支持的 KeyCode 列表并将 ButtonX 和 X 键绑定到函数,如果使用游戏手柄 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
-- 由于此函数不返回任何内容,这个处理器将
-- “洗手台”输入,其他任何操作处理器不会在之后调用
-- 这个。
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
该属性描述了这个输入的 Vector3 位置值。
对于鼠标和触摸输入,这是鼠标/触摸的屏幕位置,描述在 X 和 Y 组件中。应用于 GUI 元素的插入(例如来自顶部栏)在位置中被计算。
对于鼠标轮输入,Z组件描述轮子是否向前移动(1)、向后移动(-1)或不移动(0)。
对于 Enum.KeyCode 输入,这表示玩家的 Mouse 位置。
请注意,一个对应于 (左键点击) 和 (右键点击) 从回调中提供的 (左键点击) 和 (右键点按) 在创建后不会更新,除了鼠标输入结束时。为了获取鼠标输入的更新位置,您必须使用 InputObject 从 InputChanged 回调中引用,或调用 GetMouseLocation() 。然而,任何与触摸输入相对应的 InputObjects 将在其生命周期内每一帧更新其差异和位置。
还见于
UserInputState
用户输入状态 描述在 UserInputType 后进行的输入状态,根据特定流程进行。它使用相同名称的枚数,Enum.UserInputState。查看枚举页以获取此属性的所有可用值列表。
还见:
代码示例
这个例子获取一个列表的导航游戏板和一个列表支持的Enum.KeyCodes。然后,它循环通过支持的 KeyCode 列表并将 ButtonX 和 X 键绑定到函数,如果使用游戏手柄 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
-- 由于此函数不返回任何内容,这个处理器将
-- “洗手台”输入,其他任何操作处理器不会在之后调用
-- 这个。
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
用户输入类型 是描述这个 InputObject 代表何种输入的属性,例如鼠标、键盘、触摸或游戏手柄输入。它使用相同名称的枚数,Enum.UserInputType。查看枚举页以获取此属性的所有可用值列表。
还见: