Repository navigation
Runtime API zh TW
本頁介紹 BIT8_CLI 0.1.0 提供的 Runtime 腳本 API。
BIT8_CLI 使用 Lua 5.4,腳本副檔名為 .b8,並支援使用 func 代替 function。
| 項目 | 規格 |
|---|---|
| Framebuffer | 64 × 64 像素 |
| 模擬更新 | 固定 30 Hz |
| Tile 大小 | 8 × 8 像素 |
| Map 尺寸 | 最大 256 × 256 Tiles |
| 腳本語言 | Lua 5.4 |
| 腳本副檔名 | .b8 |
遊戲初始化時呼叫。
func init()
x = 32
y = 32
end負責處理遊戲模擬邏輯。
func update()
x = x + 1
end模擬更新頻率固定為 30 Hz。
負責繪製目前的遊戲狀態。
func draw()
cls(0)
pix(x, y, 7)
end使用指定的調色盤顏色清除 framebuffer。
cls(0)也支援別名 clear()。
在指定的螢幕座標繪製像素。
pix(32, 32, 7)也支援別名 pixel()。
繪製填滿的矩形。
rectfill(10, 10, 20, 20, 7)使用已註冊的 Asset 繪製 Tile。
BIT8_CLI 支援穩定的 Asset ID。
spr(A4, 16, 16)為了相容舊專案,仍然支援傳統數字 Sprite 參照。
使用專案中註冊的 Tile 繪製 Map。
func draw()
cls(0)
map()
endMap 繪製可以受到目前啟用的 Camera 影響。
詳細資訊請閱讀 Map。
檢查按鈕目前是否持續按住。
if btn(LEFT) then
x = x - 1
end支援的按鈕常數:
UP
DOWN
LEFT
RIGHT
A
B
檢查按鈕是否剛被按下。
if btnp(A) then
print("A pressed")
end與 btn() 不同,btnp() 適合處理單次按下事件。
讀取 Map 中的 Tile 值。
修改 Runtime Map 中的 Tile 值。
關於 Map 座標、Tile ID 和編輯行為,請閱讀 Map。
Node Script 可以透過 self 存取對應的 Runtime Node。
func update()
self.x = self.x + 1
end| 屬性 | 說明 |
|---|---|
self.id |
穩定的 Node ID |
self.name |
Node 名稱 |
self.x |
世界座標 X |
self.y |
世界座標 Y |
self.enabled |
Node 是否啟用 |
檢查 Node 如果移動指定距離,是否會與支援的碰撞物件發生碰撞。
if self:collide(1, 0) then
print("Blocked")
end這個函式只負責檢查,不會實際移動 Node。
碰撞判定使用啟用的 Node Box Collider 與 Solid Tile。
嘗試移動 Node,並考慮碰撞阻擋。
self:move(1, 0)移動會先處理 X 軸,再處理 Y 軸。
BIT8_CLI 0.1.0 提供的是基本碰撞移動,不是完整物理引擎。
將已註冊的 Sprite Definition 綁定到 Node。
self:sprite("Player")播放目前 Sprite 中指定名稱的 Animation。
self:play("walk")重複要求播放同一個 Animation,不會不必要地重新開始。
繪製 Node 目前的 Sprite Animation Frame。
func draw()
self:spr()
endSprite 定義儲存在:
bit8.sprites.toml
詳細設定請閱讀 Sprite 與 Animation。
BIT8_CLI 支援 Camera Node。
目前啟用的 Camera 會影響支援世界座標的繪圖操作。
Camera 座標代表 64 × 64 Viewport 的中心。
cls()、pix()、rectfill() 等螢幕座標繪圖操作不會受到 Camera 位移影響。
詳細資訊請閱讀 Camera。
以下範例適用於已綁定 Sprite,且已定義對應 Animation 的 Node。
func update()
if btn(LEFT) then
self:move(-1, 0)
self:play("walk")
elseif btn(RIGHT) then
self:move(1, 0)
self:play("walk")
else
self:play("idle")
end
end
func draw()
self:spr()
endAnimation 名稱必須存在於 Sprite Definition 中。
本頁整理 BIT8_CLI 0.1.0 已確立的 API 功能。完整函式簽名與特殊情況仍應以對應版本的原始碼為準。
Current Version: 0.1.0