ClickDetector

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Detektor Klik memungkinkan Scripts dan LocalScripts untuk menerima input penunjuk pada objek 3D melalui acara MouseClick mereka.Mereka bekerja saat diasuh ke BasePart , Model , atau Folder objek.Mereka mendeteksi peristiwa mouse dasar: masuk, keluar, klik kiri dan klik kanan.Input sentuhan pada perangkat TouchEnabled juga menyebabkan peristiwa klik.

Skrip kontrol default terikat ButtonR2 untuk berinteraksi dengan ClickDetectors menggunakan ContextActionService:BindActivate() , yang juga dapat digunakan untuk menghapus ini.Saat menggunakan gamepad, titik tengah memicu MouseHoverEnter dan MouseHoverLeave .Tombol aktivasi terikat menembak MouseClick .

MaxActivationDistance dapat digunakan untuk membatasi jarak seorang pemain dari detektor klik sebelum tidak lagi dapat diklik.

ClickDetector peristiwa api terjadi di klien dan server.Karena a LocalScript hanya akan berjalan jika turun dari a Player atau pemain Character , biasanya tidak berguna untuk menempatkan a LocalScript di dalam a ClickDetector , karena skrip tidak akan berjalan atau objek tidak dapat diklik.Jika Anda membutuhkan LocalScript untuk mendeteksi ClickDetector peristiwa, StarterPlayerScripts mungkin menjadi tempat yang lebih baik sebagai gantinya.

Prioritas Masukan

Jika beberapa ClickDetectors mendeteksi input pengguna, hanya yang paling dalam akan menembakkan peristiwa. Jika dua ClickDetectors adalah saudara, yang pertama akan mendapat prioritas.

Jika tindakan yang terikat dengan ContextActionService menggunakan input yang sama sebagai ClickDetector , tindakan yang terikat dengan ContextActionService akan mengambil prioritas atas peristiwa detektor klik.

UserInputService.InputBegan akan menembak sebelum ClickDetector peristiwa.

Contoh Kode

Place this code inside a Script inside a ClickDetector. The code sample creates a reference to the parent and defines a function to show a message that greets a player. Finally, it connects the MouseClick event to the defined function.

ClickDetector Example

local clickDetector = script.Parent
local function onClicked(player)
-- Show a message to the player
local msg = Instance.new("Message")
msg.Parent = player:FindFirstChild("PlayerGui")
msg.Text = "Hello, " .. player.Name
wait(2.5)
msg:Destroy()
end
-- Connect the function to the MouseClick event
clickDetector.MouseClick:Connect(onClicked)

This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

Rangkuman

Properti

Acara

Properti

CursorIcon

ContentId
Baca Paralel

Atur ikon kursor untuk ditampilkan saat mouse di atas orangtua ini ClickDetector atau DragDetector .Jika properti ini dibiarkan kosong, detektor akan menggunakan ikon default.

Untuk mengubah ikon kursor, atur properti ini ke ID aset gambar yang ingin Anda gunakan.

MaxActivationDistance

Baca Paralel

Properti ini mengontrol jarak maksimum, dalam stud, antara Character dan ClickDetector atau DragDetector untuk pemain dapat berinteraksi dengannya.Sebagai kejadian, karakter dalam 10 stud dari ClickDetector atau DragDetector dengan jarak aktivasi maksimum 5 tidak akan dapat menggunakan detektor karena mereka berada di luar jangkauan.

Metode

Acara

MouseClick

Acara ini menembak dari entah Script atau LocalScript ketika pemain berinteraksi dengan ClickDetector atau DragDetector melalui input berikut:

  • Di platform dengan mouse, ketika pemain meninggalkan klik mouse.
  • Pada TouchEnabled platform, saat pemain mengetuk.
  • Pada platform GamepadEnabled , ketika titik pusat berada di atas model yang sama dan tombol A ditekan dan dilepaskan.

Perhatikan bahwa Character pemain harus berada dalam MaxActivationDistance detektor.

Parameter

playerWhoClicked: Player

The Player yang mengklik pada orangtua dari ClickDetector atau DragDetector .


MouseHoverEnter

Peristiwa ini menembak dari entah dari Script atau LocalScript ketika orangtua dari ClickDetector atau DragDetector diberi tumpangan oleh pemain.Ini tidak melibatkan interaksi eksplisit dengan detektor, untuk yang Anda dapat mendengarkan baik MouseClick dan RightMouseClick peristiwa.

Karena sifat input pengguna, Anda tidak boleh bergantung pada semua MouseHoverEnter yang menembakkan peristiwa yang sesuai MouseHoverLeave.

Parameter

playerWhoHovered: Player

The Player yang mulai melayang di atas orangtua dari ClickDetector atau DragDetector .


Contoh Kode

The following code will print "[PlayerName] hovered over my parent!" when a player's cursor hovers over the ClickDetector parent. It will also print "[PlayerName] hovered off my parent!" when the player's cursor moves off the ClickDetector parent.

In order for this example to work as expected, it must be placed in a Script or LocalScript whose parent is a ClickDetector.

Hovering Over and Off a ClickDetector

local clickDetector = script.Parent:FindFirstChildOfClass("ClickDetector")
clickDetector.MouseHoverEnter:Connect(function(player)
print(player.Name .. " hovered over my parent!")
end)
clickDetector.MouseHoverLeave:Connect(function(player)
print(player.Name .. " hovered off my parent!")
end)

MouseHoverLeave

Peristiwa ini menembak dari entah dari Script atau LocalScript ketika kursor pemain berada di luar orangtua dari ClickDetector atau DragDetector .Ini tidak melibatkan interaksi eksplisit dengan detektor, untuk yang Anda dapat mendengarkan baik MouseClick dan RightMouseClick peristiwa.

Karena sifat input pengguna, Anda tidak boleh bergantung pada semua acara MouseHoverLeave tembakan setelah acara MouseHoverEnter yang sesuai.

Parameter

playerWhoHovered: Player

The Player yang kurornya berada di luar orangtua dari ClickDetector atau DragDetector .


Contoh Kode

The following code will print "[PlayerName] hovered over my parent!" when a player's cursor hovers over the ClickDetector parent. It will also print "[PlayerName] hovered off my parent!" when the player's cursor moves off the ClickDetector parent.

In order for this example to work as expected, it must be placed in a Script or LocalScript whose parent is a ClickDetector.

Hovering Over and Off a ClickDetector

local clickDetector = script.Parent:FindFirstChildOfClass("ClickDetector")
clickDetector.MouseHoverEnter:Connect(function(player)
print(player.Name .. " hovered over my parent!")
end)
clickDetector.MouseHoverLeave:Connect(function(player)
print(player.Name .. " hovered off my parent!")
end)

RightMouseClick

Acara ini menembak dari entah Script atau LocalScript ketika pemain mengklik kanan mouse cursor mereka di ClickDetector atau DragDetector .Perhatikan bahwa Character pemain harus berada dalam MaxActivationDistance dari detektor.

Parameter

playerWhoClicked: Player

The Player yang mengklik kanan kursor mouse pada orang tua dari ClickDetector atau DragDetector .