Tiniest2Dで2Dゲームを作る
ゲームループ関数
Lesson 7 of 11 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
あなたのスクリプトは、エンジンが自動的に呼び出すこれらの特別な関数を定義できます:
start()
ゲームが始まるときに一度呼ばれます。初期化に使用してください。
func start() {
setScene(level1)
setX(player, 100)
setY(player, 100)
print("ゲームスタート!")
}
onUpdate(dt)
毎フレーム呼ばれます。dtパラメータはデルタ時間(前のフレームからの時間、秒単位)です。
var speed = 100
func onUpdate(dt) {
if (isKeyHeld(KEY_RIGHT())) {
setX(player, getX(player) + speed * dt)
}
if (isKeyHeld(KEY_LEFT())) {
setX(player, getX(player) - speed * dt)
}
}
UIもonUpdate(dt)から描画されます。UI座標は仮想スクリーンスペース解像度を使用します。デフォルトでは、そのUIスペースは100 x 100です。setUIResolutionX()とsetUIResolutionY()で変更できます。フォントサイズ、フォントカラー、要素の色は、現在のUIを構築する際に一時的なフレームごとのスタックに押し込むことができます。
var musicOn = true
var volume = 5
func onUpdate(dt) {
uiPushElementColor(28, 40, 70, 220)
uiBox(3, 3, 30, 26)
uiPushFontSize(3)
uiPushFontColor(255, 220, 120)
uiLabel("一時停止中", 6, 6)
uiPopFontColor()
uiPopFontSize()
uiPushFontSize(2)
uiPushFontColor(240, 245, 255)
if (uiButton("再開", 6, 12, 20, 6) == UI_CLICKED()) {
paused = false
}
musicOn = uiToggle("音楽", musicOn, 6, 20, 22, 6)
uiPopFontColor()
uiPopFontSize()
volume = uiSlider("音量", volume, 0, 10, 6, 28, 24, 6)
uiPopElementColor()
}
onCollision(objA, objB)
2つのオブジェクトが衝突したときに呼ばれます。objAは常にダイナミックまたはトリガーオブジェクトです(詳細は衝突システムを参照してください)。
func onCollision(objA, objB) {
var nameA = getName(objA)
var nameB = getName(objB)
if (nameA == "Player" && nameB == "Coin") {
removeObject(level1, objB)
score = score + 1
}
}
end()
ゲームが終了するときに呼ばれます。
func end() {
print("プレイしてくれてありがとう!")
}