Roblox 코딩
로블록스(Roblox) 코딩 실습 10 : 더욱 복잡한 AI 기능과 플레이어 맞춤형 게임 메커니즘
runner326
2025. 2. 24. 22:03
로블록스 코딩 실습: 더욱 복잡한 AI 기능과 플레이어 맞춤형 게임 메커니즘 🚀🤖
이번에는 자율 이동 AI, 플레이어 타겟팅 시스템, AI 난이도 조절 기능, 플레이어 맞춤형 업그레이드 시스템과 같은 더욱 복잡한 AI 기능과 맞춤형 게임 메커니즘을 구현해보겠습니다. 이러한 요소들은 게임의 전략성과 몰입도를 극대화할 수 있습니다! 😊
1️⃣ 자율 이동 AI 구현 🧠
적 AI가 일정 범위 내에서 자율적으로 이동하는 기능을 구현해보겠습니다.
1. 적 캐릭터 추가
- Explorer 창에서 Workspace에 "Insert Object" -> Model을 추가하고 이름을 **"AIEnemy"**로 변경합니다.
- Model 안에 Humanoid와 Head를 추가하고, HumanoidRootPart를 설정합니다.
2. 자율 이동 AI 스크립트 작성
- AIEnemy에 "Insert Object" -> Script를 추가합니다.
- 다음 코드를 입력합니다:
local enemy = script.Parent
local humanoid = enemy:FindFirstChild("Humanoid")
local range = 20 -- 이동 범위
while wait(3) do
local randomX = math.random(-range, range)
local randomZ = math.random(-range, range)
local targetPosition = enemy.HumanoidRootPart.Position + Vector3.new(randomX, 0, randomZ)
humanoid:MoveTo(targetPosition)
print("적이 자율적으로 이동 중...")
end
코드 설명
- math.random(): 무작위 이동 위치를 설정합니다.
- humanoid:MoveTo(): 적 AI가 지정된 위치로 이동합니다.
- wait(3): 3초마다 새로운 위치로 이동합니다.
2️⃣ 플레이어 타겟팅 시스템 구현 🎯
AI가 가장 가까운 플레이어를 타겟으로 삼아 추적하는 기능을 구현해보겠습니다.
1. 타겟팅 AI 스크립트 작성
- AIEnemy에 다음 코드를 추가합니다:
local enemy = script.Parent
local Players = game:GetService("Players")
while wait(0.5) do
local closestPlayer = nil
local closestDistance = math.huge
for _, player in pairs(Players:GetPlayers()) do
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
local distance = (player.Character.HumanoidRootPart.Position - enemy.Position).magnitude
if distance < closestDistance then
closestPlayer = player
closestDistance = distance
end
end
end
if closestPlayer then
enemy.Humanoid:MoveTo(closestPlayer.Character.HumanoidRootPart.Position)
print(closestPlayer.Name .. "님을 추적 중...")
end
end
코드 설명
- math.huge: 무한대 값을 사용해 초기화합니다.
- magnitude: 적과 플레이어 사이의 거리를 계산합니다.
- MoveTo(): 가장 가까운 플레이어를 향해 이동합니다.
3️⃣ AI 난이도 조절 기능 구현 📈
플레이어의 레벨에 따라 AI의 속도와 공격력이 달라지는 난이도 조절 기능을 구현해보겠습니다.
1. 난이도 조절 스크립트 작성
- AIEnemy에 다음 코드를 추가합니다:
local enemy = script.Parent
local Players = game:GetService("Players")
local humanoid = enemy:FindFirstChild("Humanoid")
while wait(1) do
for _, player in pairs(Players:GetPlayers()) do
local level = player:FindFirstChild("leaderstats"):FindFirstChild("Level")
if level then
humanoid.WalkSpeed = 10 + level.Value
humanoid.Damage = 5 + (level.Value * 2)
print("AI의 속도와 공격력이 조정되었습니다.")
end
end
end
코드 설명
- WalkSpeed: 레벨에 따라 이동 속도를 증가시킵니다.
- Damage: 레벨에 따라 공격력이 증가합니다.
- 1초마다 업데이트: 주기적으로 난이도를 조절합니다.
4️⃣ 플레이어 맞춤형 업그레이드 시스템 💪
플레이어가 보유한 골드를 사용해 공격력이나 방어력을 업그레이드하는 시스템을 구현해보겠습니다.
1. 업그레이드 버튼 UI 추가
- StarterGui에 "Insert Object" -> ScreenGui를 추가합니다.
- ScreenGui 안에 TextButton을 추가하고 이름을 **"UpgradeButton"**으로 변경합니다.
- Text 속성을 "공격력 업그레이드"로 설정하세요.
2. 업그레이드 스크립트 작성
- UpgradeButton에 "Insert Object" -> LocalScript를 추가합니다.
- 다음 코드를 입력합니다:
local button = script.Parent
local player = game.Players.LocalPlayer
local leaderstats = player:WaitForChild("leaderstats")
local gold = leaderstats:FindFirstChild("Gold")
button.MouseButton1Click:Connect(function()
if gold.Value >= 100 then
gold.Value = gold.Value - 100
player.Character.Humanoid.MaxHealth = player.Character.Humanoid.MaxHealth + 20
print("공격력이 업그레이드되었습니다!")
else
print("골드가 부족합니다.")
end
end)
코드 설명
- MouseButton1Click: 버튼 클릭 시 업그레이드 실행
- MaxHealth: 공격력 또는 체력을 강화합니다.
- 골드 차감: 업그레이드 시 100 골드를 차감합니다.
마무리 ✨
이번 실습에서는 자율 이동 AI, 플레이어 타겟팅 시스템, AI 난이도 조절, 맞춤형 업그레이드 시스템과 같은 더욱 복잡한 AI 기능과 플레이어 맞춤형 게임 메커니즘을 구현해 보았습니다. 이러한 요소들을 통해 게임의 전략성과 몰입도를 극대화할 수 있습니다! 😊
다음에는 더욱 창의적이고 인터랙티브한 게임 메커니즘과 협력 플레이 기능을 소개해드리겠습니다! 🚀
반응형