Game Mechanics

1

地圖簡介

Game Mechanics(Re-Editable)是Free Fire CraftLand編輯器預置的官方玩法模板之一,為開發者提供可重複創建的基礎玩法功能藍本,主要包含地圖場景、規則設置與圖元腳本三大部分。
在本模板中,您可以體驗並學習核心玩法——通過與已設計好邏輯的各式機關交互並體驗其反饋——的編輯方法。
同時,您也可以快速掌握並深入學習遊戲中其他常見的交互機制,包括啟動自定義觸發器、增加/減少玩家的生命值、生成怪物(殭屍)、移動物件、傳送玩家到指定位置、顯示自定義文本、更換角色外觀、與自定義HUD界面交互等常用腳本邏輯,並在此基礎上進行拓展與二次編輯,進一步創造屬於自己的作品。

地圖場景

首先介紹場景設計,整體場地基於默認的空白場景、簡單搭建了方形封閉場地,並在其中分散搭建了可交互的機關(下圖上方紅框內);玩家可以分散在三支隊伍中,在進入遊戲後將出生在地圖的一側(下圖下方紅框內)、自由進行核心玩法的體驗。

2

除了直接在場景內對物件進行快速調整,您還可以通過點擊更多-物件管理器對場景內物件進行整體管理。

3

功能相關

規則

關於玩法規則的構建,需要點擊 設定-玩法設置-玩法規則編輯

4

您可以在此處編輯針對該張模板的詳細規則,包括:模式、屬性設置、經濟與相機。
當前模板的規則設置主要在以下位置和默認設置有區別:模式與經濟,下面將列出具體不同的規則條目。

模式

回合設定:用於設定回合相關的參數。
隊伍設定:用於決定單局遊玩玩家數量、可分配到的隊伍數量以及能使遊戲開始的最小玩家數量。

5

經濟

編輯商店:用於決定玩家可在特定位置通過消費代幣獲取的道具及其價格。
注意:由於當前模板的核心玩法以機關體驗為主,因此並未設置 自動販賣機,如有需要可以從物件庫中拖入場景並創建。

6 7

用戶交互界面

關於自定義 UI 的構建,需要點擊 更多-自定HUD

8

您可以在此處編輯玩家在局內可交互的自定義 HUD 界面,並可跳轉進行相應的腳本設計。
當前模板的自定義 HUD 界面僅為 按鈕門 機關服務。

關於具體控件的編輯,需要點擊 編輯布局 → 在左側列表中選擇想要編輯的控件。

9 10

您可以在此處對具體控件的各項屬性進行調整,如:尺寸、位置、旋轉角度、可見性、透明度、顏色、顯示內容等。

跳轉對應圖元腳本設計:
點擊 編輯腳本 → 跳轉到 HUD 腳本編輯界面,具體的腳本製作方式會在下文中詳細介紹。

11

局內 HUD 界面總覽:(當玩家角色進入 按鈕門 的自定義觸發器範圍內時自動顯示)

12

該按鈕用於控制 按鈕門 機關中門的開啟/關閉。

圖元

更多的玩法規則需要用到圖元編輯器,打開方式是:
點擊 更多-圖元腳本,然後在界面右上角選擇具體想要編輯的腳本。

13 14

本版塊主要介紹 “Game Mechanics” 這一核心玩法以及其他具體規則基於腳本的實現方式。
您可以在此處編輯具體腳本並調整相關數值。
對於需要重點了解的腳本功能,您可以通過點擊具體的腳本來進行查看。

自定義觸發器腳本

本部分將針對各機關逐一介紹效果與腳本內容

序號 案例機關名稱
治療區域
傷害區域
怪物生成區域
陷阱區域
傳送區域
文本展示區域
換裝區域
升降電梯
自動門
按鈕門

治療區域

15
  1. 玩家角色進入後以每秒 15 的速度持續恢復生命值,同時在角色身上播放治療特效

總覽:
16

  • 該機關的核心功能——治療玩家(使玩家的生命值增加)——被封裝為以下函數,可以對進入該機關的每一位符合條件的玩家執行;下面是具體的腳本實現方式:

區域2-3
“Updatetreat” 函數

  1. 若 “ListOfTreat” 長度>0,若遊戲時間 - 自定義變數 “LastUpDateTime” 的結果大於 1000,則設置 “LastUpDateTime” = 遊戲時間
  2. 索引資料容器 “ListOfTreat” 的元素 “Player”,若玩家當前血量<該玩家最大血量,則增加該玩家 15 血量
17
  • 在玩家受到治療時,也通過特效的視覺反饋提醒玩家該功能正在發生中,此功能也被封裝為以下函數;下面是具體的腳本實現方式:

區域2-2
“CreateEffects” 函數

  1. 將玩家追加到列表 “ListOfTreat”
  2. 在玩家身上創建上升氣流特效,循環類型=循環,即刻播放=真,返回 “SpecialEffect”
  3. 將 “SpecialEffect” 插入列表 “SpecialEffect” 中,索引為其在玩家處最先出現的位置
  4. 創建 “SpecialEffect” 對玩家的目標跟隨,XYZ 軸方向均無偏移,無參考座標系並即刻播放,返回 “Tween”
  5. 設置 “SpecialEffect” 顏色=綠色
  6. 設置 “SpecialEffect” 特效縮放率 = XYZ 軸各方向 0.5 倍
  7. 將 “Tween” 插入列表 “Tween” 中索引為其在玩家處最先出現的位置
18
  • 此處腳本主要包括:定義變數確定事件的執行時機、對進入/離開機關的玩家做相應處理、適時調用函數

區域2-1

  1. 當階段開始時,使自定義變數 “LastUpDateTime” = 遊戲時間
  2. 當玩家角色進入該自定義觸發器時,調用 “CreateEffects” 函數
  3. 當玩家角色離開該觸發器時,批量銷毀&刪除目標的值(部分需要通過列表索引)
  4. 當更新時,調用 “Updatetreat” 函數
19

附:該腳本下需要用到的自定義變數與函數,可以點擊 變數函數 查看和管理

20 21


傷害區域

22
  1. 玩家角色進入後以每秒 15 的速度持續失去生命值

總覽:
23

  • 該機關的核心功能——傷害玩家(使玩家生命值減少)——被封裝為以下函數,可以對進入該機關的每位符合條件玩家執行;下面是具體腳本實現:

區域3-2
“UpdateInjure” 函數

  1. 若 “ListOfInjure” 長度>0
  2. 若遊戲時間 - 自定義變數 “LastUpDateTime” 結果>1000,則設置 “LastUpDateTime” = 遊戲時間,索引資料容器 “ListOfInjure” 的元素 “Player”
  3. 若玩家當前血量≠0,則對該玩家造成 15 傷害
24
  • 此處內容:定義變數用於確定事件時機、進入/離開機關處理、適時調用函數

區域3-1

  1. 當階段開始時,設置 “LastUpDateTime” = 遊戲時間
  2. 當玩家角色進入/離開觸發器,將玩家追加至/刪除出 “ListOfInjure”
  3. 當更新時調用 “UpdateInjure” 函數
26

附:該腳本下需用到的自定義變數與函數,可通過 變數函數 進行管理

27 28


怪物生成區域

29
  1. 玩家角色進入時在該區域附近生成一隻殭屍
  • 核心功能——生成殭屍——可被進入者觸發,並生成相應音效;具體腳本如下:
  1. 當玩家角色進入該自定義觸發器時,在座標 XYZ= (玩家X-2, 玩家Y, 玩家Z-2),創建一隻 自動索敵=真、行為類型=被動、無路徑 的普通殭屍
  2. 創建無目標的音效,循環類型=一次,立即播放=真
30

陷阱區域

31 32
  1. 玩家角色進入時頭頂的陷阱籠子會掉落,將玩家困在該區域
  2. 陷阱籠子掉落後將顯示 10 秒倒計時,並於倒計時結束後恢復陷阱

總覽:
33

  • 該機關的核心功能——陷阱籠子掉落並困住玩家——被封裝為以下函數,可對進入機關的玩家執行。
  • 同時,該機關的初始化也被封裝為函數,內容包括:統一編組陷阱物件、提前隱藏倒計時文本等。

區域4-2
“TrapFalls” 函數

  1. 若 “TrapState” 為真,索引資料容器 “Trap” 中元素 “Trap”,使關卡物件 “Trap” 移動到 XYZ=(TrapX, TrapY-2, TrapZ)
  2. 設置 “TrapState” 為假

“Initialization” 函數

  1. 將 “Iron Fence1-4” 追加至 “Trap”
  2. 設置 “TrapTime” 為真
  3. 在 XYZ=(BlockX, BlockY+3, BlockZ)建立文本物件,返回 “Text”
  4. 設置變數 “Time” = “Text”
  5. 設置 Text 位置 XYZ=(BlockX, BlockY+3, BlockZ)
  6. 設置 Text 內容 = “10”
  7. 設置 Text 縮放為 XYZ 軸方向 0
34

區域4-3
“UpdateInjure” 函數

  1. 若 TrapState=假,且遊戲時間-LastUpDateTime>1000,則更新 LastUpDateTime,將 “Time” 轉換為整數 Result,並設置 “Time” 內容為 Result-1
  2. 若 Time=0,則隱藏文本、重置為10,呼叫 TrapRecovery 函數,並設 TrapState=真
35

區域4-4

  1. 若 TrapState=假,索引容器 “Trap” 的元素 “Each”,使其上升 Y+2
  2. 設置 “Time” 縮放倍率 = 2
36

區域4-1

  1. 遊戲開始 → 調用 Initialization 函數
  2. 玩家進入觸發器 → 等待0.3秒 → 調用 “TrapFalls” 與 “CountDown” 函數
  3. 更新時 → 調用 “UpdateInjure”
37

附:使用到的自定義變數與函數

38 39


傳送區域

40 41
  1. 玩家角色進入後顯示 3 秒倒計時,並播放傳送特效
  2. 倒計時結束後將玩家傳送至指定座標

總覽:
42

區域5-2
“MyUpdate” 函數

  • 檢測玩家狀態,若狀態=1,則計算停留時間與倒計時。
  • 若倒計時仍大於0,更新 Text 顯示;否則將玩家傳送至 TeleportTar+2 的位置。
43

區域5-3
“InitPlayerData” 函數

  • 將玩家追加至清單,並建立 TextEntity 與火花 VisualEffect 特效,分別跟隨玩家並加入列表。
44

區域5-4
“ReadyToTeleport” 函數

  • 設定玩家的 State=1,記錄進入時間,顯示倒計時文本與特效。
45

區域5-5
“AbortTeleport” 函數

  • 重置玩家狀態並隱藏倒計時與特效。
46

區域5-1

  1. 循環每0.2秒調用 MyUpdate
  2. 玩家進入 → 初始化數據 → ReadyToTeleport
  3. 玩家離開 → AbortTeleport
47

附:使用到的自定義變數與函數

48 49


文本顯示區域

50
  1. 玩家角色進入時,顯示 “HelloWorld” 文本
  2. 玩家角色離開時,關閉該文本
  • 功能核心:顯示或關閉 HelloWorld 文本,被封裝為 CreateTips/DeleteTips 函數。

腳本:

  1. 玩家進入/離開觸發器 → 在 ListOfPlayer 中增減玩家
  2. 在 “CueArea” 位置呼叫 CreateTips 或 DeleteTips

“CreateTips” 函數

  1. 在 (LocationX, LocationY+2, LocationZ) 創建文本物件
  2. 設置內容 = “Hello World”

“DeleteTips” 函數

  • 若玩家列表長度 ≤0,則銷毀文本
51

附:需用到的變數與函數

52 53

換裝區域

54
  1. 玩家角色進入時,根據角色性別改變對應造型。
  • 核心功能:為玩家更換相應性別的服飾,可被每位進入者觸發。

實現方式:

  1. 遊戲開始時,將套裝追加到 “Women’sWardrobe” 與 “Men’sWardrobe”
  2. 玩家進入觸發器時,若性別=2,則打亂 “Men’sWardrobe” 並設定其套裝;否則打亂 “Women’sWardrobe” 並使用。
55

附:此腳本需用到的自定義變數,可通過 變數 查看

56


升降電梯

57
  1. 玩家進入電梯 → 電梯緩緩上升,直至最高點
  2. 玩家離開電梯 → 電梯緩緩下降,直至初始位置

總覽:
58

  • 功能核心:使電梯在玩家進入時上升、離開時下降,被封裝為以下函數:

區域6-2、6-3

“CreateAnElevator” 函數

  1. 設定變數 “ElevatorsLocation” 為 Elevator 位置
  2. 當 “PlayerList” 長度>0 → 循環 0.5 秒,逐步 Y+0.2 → 更新位置,直到長度≤0 或 Mark≥20

“DescendElevator” 函數

  1. 當 “PlayerList”=0 → 循環 0.5 秒,逐步 Y-0.2 → 更新位置,直到有人進入或 Y≤2.8
59 60

區域6-1

  1. 玩家進入 → 加入 PlayerList,調用 “CreateAnElevator”
  2. 玩家離開 → 移除 PlayerList,若空則調用 “DescendElevator”
  3. 遊戲開始 → 設置 Elevator 為「High-Tech Platform A1」
61

附圖:用到的自定義變數與函數

62 63


自動門

64
  1. 玩家靠近門(進入觸發範圍) → 門自動打開
  2. 玩家遠離門(離開範圍) → 門自動關閉

總覽:
65

區域7-3、7-4

“OpenTheDoor” 函數

  • 若 PlayerList≥0 且 Mark≤5 → 門每0.5秒往兩側逐步打開 → Mark+1

“CloseTheDoor” 函數

  • 若 PlayerList=0 且 Mark≥0 → 門每0.5秒往內逐步關閉 → Mark-1
66 67

區域7-1、7-2

  1. 遊戲開始 → 設定 Mark=0
  2. 玩家進入/離開觸發範圍 → 等待到下一幀,更新 PlayerList,呼叫 Open/Close 函數
68 69

附:需用到的變數與函數

70 71


按鈕門

72 73
  1. 玩家靠近 → UI 顯示按鈕 XX
    • 點擊後開門,再次點擊後關門
  2. 玩家遠離 → 按鈕消失,門保持當前狀態
  • 功能核心:門開關由玩家點擊觸發,封裝為函數

腳本:

  1. 玩家進入觸發器 → 設 HUD 可見=真
  2. 玩家進入遊戲 → 呼叫 CreateHUD 函數
  3. CreateHUD 函數:
    • 對應玩家創建自定義 HUD 按鈕 → 插入 HudList → 默認隱藏
  4. 玩家離開觸發器 → 設 HUD 可見=假
74

附:使用到的變數與函數

75 76

全局腳本

  • 為了精簡腳本內容、便於通過單一的變數判斷多個機關的運行狀態(如:機關⑧ 升降電梯 中電梯的運行時長、機關⑩ 按鈕門 中門的開關狀態),我們需要在全局腳本處設置一個變數(記錄為 Mark)。
    • 當遊戲開始時,設置自定義變數 “Mark” = 0
77

附:該腳本下需要使用到的自定義變數,可以通過 變數 進行查看與管理。

78


玩家腳本

  • 為了使玩家可以流暢體驗核心玩法,需要允許玩家在死亡後復活;下面是具體的腳本實現方式:
  1. 當玩家加入遊戲時,設置自定義變數 “DamageDetermina” = 假
  2. 當玩家被擊殺時,等待3秒,並在下一幀復活
79

附:該腳本下需要使用到的自定義變數,可以通過 變數 進行查看與管理。

80


HUD 腳本

總覽:
81

  • 由於玩家點擊按鈕時會根據門當前的狀態觸發不同的行為,因此需要在此處檢測實體屬性與變數 Mark 的值,進而觸發對應函數;以下是腳本細節:

區域1-1

  1. 當按鈕 XX 被點擊時,若物件 “Frozen Steel Panel A1” 的 X 軸位置≥2 且 Mark≠1 → 調用 CloseTheDoor 函數
  2. 否則 → 調用 OpenTheDoor 函數
82

區域1-2、1-3

“OpenTheDoor” 函數:

  1. 若 Mark=0,則 Mark=1
  2. 開始執行循環:等待0.5秒,物件沿 X 軸移動 0.2 → 直到 X≥2,設置 Mark=2 並中斷循環

“CloseTheDoor” 函數:

  1. 若 Mark=2,則 Mark=1
  2. 開始執行循環:等待0.5秒,物件沿 X 軸移動 -0.2 → 直到 X≤1,設置 Mark=0 並中斷循環
83 84

附:此腳本下需用到自定義函數,可通過 函數 進行查看與管理。

85


復活點腳本

  • 在玩家進入局內開始體驗核心玩法後,復活點屬於無功能元件,可能會影響遊戲體驗,因此需要設為未激活狀態。

腳本:

  1. 當回合開始時,設置該實體的活動狀態 = 真
  2. 等待 2 秒
  3. 設置該實體的活動狀態 = 假
86

二次編輯建議

  • 通過調整腳本值,設置更加誇張或隨機的機關行為,以增加遊戲戲劇性
  • 搭配商店等機制,加入 PVP 對戰,使機關作為障礙的一部分
  • 豐富或深化機關的功能,探索並實現更多腳本機制應用,進一步拓展樂趣