Verse 코드를 계속 열어 두셨나요? 좋습니다!
이번 실습에서는 3강: 실습 시간에서 약속했던 대로 실제로 포트나이트 캐릭터에 피해를 입히는 함수를 호출해 보겠습니다.
코딩을 시작하기 전에 UEFN 섬에 장치를 추가해야 합니다. 플레이어 생성 패드라고 하며, 이 장치로 플레이어 캐릭터가 공중이 아닌 장치 위치에서 부활하며, 포트나이트의 기본 부활 위치가 됩니다. 이 실습에서 코드를 작동하려면 플레이어 생성 패드가 필요합니다.
플레이어 생성 패드 장치를 배치하는 방법을 알아보려면 포크리 사용자를 위한 UEFN 컨트롤의 오브젝트 배치 내용을 참고하세요. 여러분의 섬을 원하는 곳에 자유롭게 배치할 수 있습니다.
이 실습에서 사용하는 코드 중 몇 가지는 처음 보시겠지만, 각 줄의 역할을 확인할 기회가 있을 겁니다. 당장은 이해되지 않는 부분이 있어도 걱정하지 마세요. 이번 실습에서는 함수 호출을 집중적으로 다룹니다.
Verse 파일 최상단에 다음과 같은 줄을 입력해 두세요. 이 줄은 기본(built-in) Verse 및 포트나이트 코드 중 어떤 부분을 Verse로 제작된 장치에서 사용 할지를 Verse 컴파일러에 알려줍니다.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Playspaces }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
다음으로, 포트나이트 캐릭터에게 피해를 입히는 코드 줄을 작성해 볼 것입니다. 한 줄씩 자세히 살펴보겠습니다.
GetPlayspace()라는 이름의 함수를 호출합니다.fort_playspace타입의 값이 반환되며, 이 값은Playspace라는 이름의 상수에 저장합니다. 이 값이 있어야 플레이어를 구할 수 있습니다.Playspace상수에GetPlayers()라는 이름의 메서드를 호출합니다. 메서드는player타입의 배열을 반환합니다. Verse에서 배열(array) 이란 동일한 타입의 여러 변수를 포함할 수 있는 컨테이너입니다. 이 경우 레벨의 모든 플레이어가AllPlayers배열에 포함되어 있습니다.if를 사용하여 코드에서 예/아니요로 답이 나뉘는 질문을 할 수 있다는 내용은 이미 학습했습니다. 이 예시에서는if를 사용하여AllPlayers배열의 첫 번째 위치에 변수가 있는지 질문합니다.AllPlayers[0]표현식은 해당 위치에 있는 변수의 값이 존재하는 경우 그 값을 반환하며,FirstPlayer상수는 반환값으로 초기화됩니다.- 첫 번째
if에 중첩된 두 번째if는GetFortCharacter[]메서드를 호출하여FirstPlayer상수에 포트나이트 캐릭터가 있는지 질문합니다. 호출할 때 대괄호 를 사용한 것에 유의하세요. 대괄호는 실패할 수 있는 함수를 호출하는 데 사용됩니다. 그래서 이 함수를 호출할 때if를 사용하는 것입니다.GetFortCharacter[]가fort_character타입의 값을 성공적으로 반환하면 FortniteCharacter 상수가 해당 값으로 초기화됩니다. -
이제
fort_character타입의 상수가 있으므로 그 상수의Damage()메서드를 호출할 수 있습니다. 이 메서드는float타입의 파라미터 하나를 취합니다. 이 값은 캐릭터가 받게 되는 피해의 양입니다. 다음 수업에서 파라미터에 대해 자세히 알아보겠습니다.Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Damage(50.0)
이 코드를 실행하면 게임이 시작할 때 포트나이트 캐릭터가 50.0 의 피해를 입을 겁니다!
멋지죠?
전체 스크립트
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Playspaces }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
hello_world_device := class(creative_device):
# 실행 중인 게임에서 장치가 시작되면 실행됩니다.
OnBegin<override>()<suspends>:void=
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Damage(50.0)