게임 루프의 다음 단계에서 플레이어는 백팩에 더 많은 공간을 구입할 수 있도록 금을 위해 아이템을 판매해야 합니다.
판매 플랫폼 생성
플레이어는 플랫폼에 서서 가방에 있는 각 아이템에 대해 금을 판매합니다.
플랫폼 설정
플랫폼은 어떤 부분이든 될 수 있으며 판매를 처리하는 스크립트를 포함합니다.
SellPlatform이라는 이름의 새로운 부품을 생성합니다. 경험의 테마에 맞게 사용자 정의하십시오.
In SellPlatform, 새로운 스크립트인 SellScript를 만들고 코멘트를 달다/남기다, 의견을 내다추가합니다.
In SellScript, type local sellPart = script.Parent to get the SellPlatform part.
-- 모든 플레이어의 아이템을 판매하고 골드를 제공합니다.local sellPart = script.Parent
터치 이벤트 처리
플랫폼을 사용하려면 스크립트에서 플레이어가 그것을 터치하는지 여부를 확인할 함수가 필요합니다.
플레이어가 플랫폼을 터치하는지 여부를 확인하는 함수 onTouch() 를 생성합니다.
local function onTouch(partTouched)local character = partTouched.Parentend리더보드통계를 변경하려면 스크립트는 어떤 플레이어가 캐릭터를 제어하는지 알아야 합니다. 이 문에서는 GetPlayerFromCharacter() 함수를 사용하여 플레이어를 찾습니다.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)다음 줄에서 플레이어의 리더스탯 컨테이너를 가져옵니다.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- 플레이어의 리더보드가져옵니다. 아이템과 돈을 얻는 데 필요합니다local playerStats = player:FindFirstChild("leaderstats")end다음 줄에서 플레이어의 돈과 아이템을 가져오기 위해 변수를 만듭니다.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- 플레이어의 리더보드가져옵니다. 아이템과 돈을 얻는 데 필요합니다local playerStats = player:FindFirstChild("leaderstats")if playerStats then-- 플레이어의 아이템과 돈을 가져옵니다.local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endend작업을 확인하려면 플레이어가 sellPart를 터치하면 실행되는 프린트 문을 추가하십시오.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")스크립트 하단에서 onTouch() 를 연결하여 부품 터치 이벤트를 판매합니다.
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- 플레이어의 리더보드가져옵니다. 아이템과 돈을 얻는 데 필요합니다local playerStats = player:FindFirstChild("leaderstats")if playerStats then-- 플레이어의 아이템과 돈을 가져옵니다.local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)프로젝트를 플레이하고 sellPart에 나서세요; 출력 창에 메시지 "A Player touched sellPart" 를 볼 수 있습니다.
아이템 판매
이 경험에서 플레이어는 각 아이템에 대해 100 골드를 얻습니다. 돈을 얻은 후, 플레이어의 아이템은 0으로 다시 설정되어 플레이어가 세계를 더 많은 아이템으로 탐색할 수 있습니다.
새 판매 기능 코딩
변수 아래에서 sellItems() 라는 이름의 함수를 만들어 두 매개 변수를 각각 playerItems 및 playerGold 로 지정합니다.
-- 모든 플레이어의 아이템을 판매하고 골드를 제공합니다.local sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)플레이어에게 올바른 양의 금을 제공하려면 playerItems 의 값을 가져가 금당 받아야 하는 금액을 곱하십시오. 이 예에서는 각 항목당 100개의 금 코인이 지정됩니다.
In the sellItems() 함수에서, type local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- 플레이어가 가진 아이템의 수를 가져와 아이템 당 가치를 곱합니다.local totalSell = playerItems.Value * 100endType playerGold.Value += totalSell 을 입력하여 아이템의 골드에 골드를 추가합니다.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- 플레이어가 돈에 얼마나 벌지 추가playerGold.Value += totalSellendplayerItems.Value = 0 을 입력합니다. 이는 플레이어의 아이템을 0으로 다시 설정합니다. 플레이어의 아이템이 0으로 다시 설정되지 않으면 스크립트는 플레이어에게 골드를 계속 제공합니다.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endIn the onTouch() 함수, 두 번째 if 문 아래에서 sellItems() 함수를 호출합니다. 매개 변수를 전달하여, 1> playerItems1> 및 4> playerGold4> 을 변경할 수 있습니다.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- 플레이어의 리더보드가져옵니다. 아이템과 돈을 얻는 데 필요합니다local playerStats = player:FindFirstChild("leaderstats")if playerStats then-- 플레이어의 아이템과 돈을 가져옵니다.local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendend프로젝트를 플레이하십시오; 플레이어가 플랫폼을 밟을 때마다 그들의 금이 증가하고 아이템이 0으로 설정됩니다.
문제 해결 팁
이 시점에서는 아이템을 판매하는 것이 원하는 대로 작동하지 않습니다. 다음 중 하나를 시도해 보세요.
- sellItems() 은 플레이어의 아이템을 검사하는 두 번째 문에서 호출됩니다.
- playerItems와 마찬가지로 모든 IntValue는 변경하면 끝에 .Value를 사용합니다. 값은 항상 대문자로 표시됩니다.
- sellPart.Touched:Connect(onTouch) 는 스크립트의 하단에 입력됩니다.
- sellItems(playerItems, playerGold)는 인간형 문장의 끝에 입력됩니다.