게임 내에서 친구를 찾는 것은 도전이 될 수 있습니다. FriendsLocator 개발자 모듈은 플레이어가 장소 내에서 친구를 쉽게 찾고 순간이동할 수 있도록 도와줍니다.
모듈 사용법
설치
게임 내에서 FriendsLocator 모듈을 사용하려면:
스튜디오의 Window 메뉴나 Home 탭 툴바에서 Toolbox를 열고 Creator Store 탭을 선택합니다.

모델 정렬이 선택되어 있는지 확인한 후, Categories에 대해 See All 버튼을 클릭합니다.

Packages 타일을 찾아 클릭합니다.
Friends Locator 모듈을 찾아 클릭하거나 3D 뷰로 드래그 앤 드롭합니다.

Explorer 창에서 전체 FriendsLocator 모델을 ReplicatedStorage로 이동합니다. 경험을 실행하면 모듈이 작동하기 시작합니다.
스튜디오에서 테스트하기
모듈을 스튜디오에서 테스트하려면, FriendsLocator 모듈은 다중 클라이언트 시뮬레이션에서 실행되어야 하며, 솔로 플레이 테스트에서는 친구가 존재하지 않기 때문입니다.
StarterPlayerScripts에서 새로운 LocalScript를 생성하고 이름을 ConfigureFriendsLocator로 변경합니다.

새 ConfigureFriendsLocator 스크립트에 다음 코드를 붙여넣습니다. configure 함수 내의 showAllPlayers 설정은 스튜디오에서 테스트할 때 모든 사용자에 대해 로케이터가 표시되도록 하며, 게시된 장소에서는 표시되지 않습니다.
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- 스튜디오에서 디버깅을 허용})스튜디오의 미제인에서 다중 클라이언트 시뮬레이션을 2개의 클라이언트로 시작합니다. 세 개의 새로운 스튜디오 인스턴스가 열리며, 하나는 시뮬레이션된 서버이고 두 개는 시뮬레이션된 클라이언트입니다.

클라이언트 스튜디오 인스턴스 중 하나에 들어가서, 다른 캐릭터와 100 스터드 떨어진 곳으로 이동하면 그 캐릭터 머리 위에 로케이터 아이콘이 나타나는 것을 볼 수 있습니다.

이벤트 연결하기
FriendsLocator 모듈은 사용자가 로케이터 아이콘과 상호작용할 때 맞춤 동작을 도입할 수 있도록 이벤트를 노출합니다.
스튜디오에서 테스트에서 설명한 ConfigureFriendsLocator 스크립트를 생성했는지 확인합니다.
스크립트에 8행과 11-13행을 추가합니다:
LocalScript - ConfigureFriendsLocatorlocal RunService = game:GetService("RunService")local ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({showAllPlayers = RunService:IsStudio(), -- 스튜디오에서 디버깅을 허용teleportToFriend = false, -- 아이콘 클릭/탭 시 순간이동 방지})FriendsLocator.clicked:Connect(function(player, playerCFrame)print("로케이터 아이콘을 클릭한 플레이어:", player.DisplayName)end)다중 클라이언트 테스트를 수행하고 다른 캐릭터의 로케이터 아이콘을 클릭합니다. 캐릭터가 그 위치로 순간이동하지 않으며, 아이콘 클릭에 대한 맞춤 처리를 가능하게 해주는 이벤트가 트리거되는 것을 확인합니다.
맞춤 로케이터 UI
기본 스타일이 경험에 맞지 않는 경우, 기본 아바타 초상화 UI를 자신의 UI로 교체할 수 있습니다.

기본 UI를 교체하려면:
StarterGui 컨테이너 안에 새로운 ScreenGui 인스턴스를 생성합니다.

새 ScreenGui의 자식으로 FriendLocator라는 이름의 Frame 인스턴스를 생성한 다음, ImageLabels, TextLabels와 같은 요소를 추가하여 맞춤 UI를 디자인합니다.

완료되면, 모듈이 필요할 때까지 맞춤 로케이터 UI를 표시하지 않도록 부모 ScreenGui를 비활성화합니다.

(선택 사항) 친구 아바타 초상화와 DisplayName이 맞춤 UI의 어딘가에 표시되기를 원한다면, 아래 인스턴스를 FriendLocator 프레임 안에 배치할 수 있습니다.
- 이름이 Portrait인 ImageLabel.
- 이름이 DisplayName인 TextLabel.

모듈은 이러한 항목을 찾아 친구 아바타 초상화 및/또는 표시 이름을 각각 표시합니다.
API 참조
함수
configure
configure(config: table)
config 테이블의 키/값을 통해 기본 구성 옵션을 재정의합니다.
| 키 | 설명 | 기본값 |
|---|---|---|
| alwaysOnTop | true일 경우 모든 것을 가리지 않고 로케이터 아이콘을 가장 위에 표시합니다. | true |
| showAllPlayers | true일 경우 친구뿐만 아니라 모든 플레이어의 위치를 표시합니다. 이는 스튜디오에서 모듈의 기능을 확인하는 데 도움이 됩니다. | false |
| teleportToFriend | 로케이터 아이콘이 클릭되거나 탭될 때 플레이어 캐릭터를 친구의 위치로 순간이동합니다. | true |
| thresholdDistance | 로케이터 아이콘이 나타나는 카메라 거리 임계값이며, 이 거리보다 가까운 친구는 아이콘을 표시하지 않습니다. | 100 |
| maxLocators | 동시에 표시되는 로케이터 아이콘의 최대 수입니다. | 10 |
LocalScript - ConfigureFriendsLocatorlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local FriendsLocator = require(ReplicatedStorage.FriendsLocator)FriendsLocator.configure({alwaysOnTop = true,showAllPlayers = false,teleportToFriend = true,thresholdDistance = 100,maxLocators = 10})
이벤트
clicked
로케이터 아이콘이 로컬 플레이어에 의해 클릭되거나 활성화될 때 발생합니다. 이 이벤트는 LocalScript에서만 연결할 수 있습니다.
| 매개변수 | |
|---|---|
| player: Player | 로케이터 아이콘에 해당하는 플레이어입니다. |
| playerCFrame: CFrame | 로케이터 아이콘에 해당하는 플레이어의 Humanoid.RootPart의 CFrame입니다. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
local localPlayer = Players.LocalPlayer
FriendsLocator.clicked:Connect(function(player, playerCFrame)
-- 작동할 위치 주위 스트리밍 요청
if Workspace.StreamingEnabled then
local success, errorMessage = pcall(function()
localPlayer:RequestStreamAroundAsync(playerCFrame.Position)
end)
if not success then
print(errorMessage)
end
end
print("로케이터 아이콘을 클릭한 플레이어:", player.DisplayName, "위치:", playerCFrame.Position)
end)
visibilityChanged
로컬 플레이어의 화면에서 로케이터 아이콘이 표시되거나 숨겨질 때 발생합니다. 이 이벤트는 LocalScript에서만 연결할 수 있습니다.
| 매개변수 | |
|---|---|
| player: Player | 로케이터 아이콘에 해당하는 Player 객체입니다. |
| playerCFrame: CFrame | 로케이터 아이콘에 해당하는 플레이어의 Humanoid.RootPart의 CFrame입니다. |
| isVisible: boolean | 로컬 플레이어의 화면에 로케이터 아이콘이 현재 표시되고 있는지 여부입니다. alwaysOnTop가 false이더라도 3D 세계의 객체 뒤에서 렌더링되면 여전히 true일 수 있습니다. |
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FriendsLocator = require(ReplicatedStorage.FriendsLocator)
FriendsLocator.visibilityChanged:Connect(function(player, playerCFrame, isVisible)
print("로케이터 아이콘의 가시성:", player.DisplayName, ":", isVisible)
end)