前语

在 KorGE 中,API 是开发者运用 KorGE 构建游戏应用程序的基础。在本文中,咱们将介绍 KorGE 的首要 API,包含图形烘托、物理引擎、音频播映、输入事情处理等等。这篇文章,首要经过一些简略的案例代码,来了解怎么运用 KorGE 的 API 开发游戏应用程序。

图形烘托 API

KorGE 中的图形烘托 API 首要包含 Sprite、Shape、Graphics 和 Image 等。咱们经过一些案例,来初步体会一下这些 API 吧。

Sprite

Sprite 是 KorGE 中的基本图形目标,能够经过它来创立和办理游戏场景中的精灵。

import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korim.color.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val sprite = sprite() {
        position(256, 256)
        anchor(.5, .5)
        scale(2.0)
        rotation(45.degrees)
        addChild(text("Hello, World!"))
    }
    addChild(sprite)
}

Shape

Shape 是用于制作图形的类,能够制作各种形状,如矩形、圆形、多边形等。

import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korim.color.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val circle = circle(radius = 50.0, fill = Colors.GREEN) {
        position(256, 256)
    }
    addChild(circle)
}

Graphics

Graphics 是用于创立和办理多个 Shape 目标的容器。

import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korim.color.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val triangle = graphics {
        fill(Colors.RED) {
            moveTo(0, 0)
            lineTo(50, 100)
            lineTo(100, 0)
        }
        position(256, 256)
    }
    addChild(triangle)
}

Image

Image 是用于办理图像资源的类,能够加载、缓存和显现游戏中的图像。

import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korim.color.*
import com.soywiz.korim.format.*
import com.soywiz.korim.bitmap.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val image = resourcesVfs["myimage.png"].readBitmap()
    val bitmap = image.sliceWithSize(0, 0, 100, 100)
    val imageView = image(bitmap) {
        position(256, 256)
    }
    addChild(imageView)
}

经过这些 API,开发者能够轻松地创立和办理游戏中的图形资源,完成各种效果和特效。

物理引擎 API

Korge 中的物理引擎 API 首要包含 Box2D 和 Nape 两种物理引擎。

Box2D

Box2D 是一个用于模拟二维物理体系的开源物理引擎。KorGE 中运用的 Box2D 版别为 Box2D-JS,它是一个完全基于JavaScript 的版别,能够在 Web 浏览器Node.js 环境中运行。Box2D-JS 支持的功用包含静态和动态刚体、碰撞检测、关节、重力等。

在 KorGE 中运用 Box2D 物理引擎,需求先引进 Box2D 库,然后创立 Box2D 国际目标,增加刚体和关节等物理元素,并在每个烘托帧中更新 Box2D 国际目标。以下是一个简略的 Box2D 物理引擎示例:

import com.soywiz.korge.box2d.*
import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korim.color.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val box2dWorld = world(gravity = Vec2(0, 9.8f)) // 创立Box2D国际目标
    val ground = box(width = 512.0, height = 50.0) { // 创立地上刚体
        position(256, 450)
        fixture { restitution = 0.2f }
        bodyType = BodyType.STATIC
    }
    val ball = circle(radius = 25.0, fill = Colors.BLUE) { // 创立球刚体
        position(256, 256)
        fixture { density = 1.0f }
        bodyType = BodyType.DYNAMIC
    }
    addChild(ground)
    addChild(ball)
    addFixedUpdater { // 更新Box2D国际目标
        box2dWorld.step(1.0 / 60, 6, 2)
        ball.updateFromBody()
    }
}

在这个示例中,咱们创立了一个 Box2D 国际目标,并增加了一个地上刚体和一个球刚体。每个刚体都有一个bodyType 特点,指定刚体类型为静态或动态,以及 fixture 特点,指定刚体的物理特性,如密度、摩擦系数、恢复系数等。咱们还运用 addFixedUpdater 办法,在每个烘托帧中更新 Box2D 国际目标,并经过 updateFromBody 办法将 Box2D 刚体的方位和旋转信息更新到对应的 KorGE 视图目标中。

Nape

Nape 是一个用于模拟二维物理体系的开源物理引擎,它支持静态和动态刚体、碰撞检测、关节、重力等。Nape 在性能上比 Box2D 更快,但运用起来更加杂乱。

在 KorGE 中运用 Nape 物理引擎,需求先引进 Nape 库,然后创立 Nape 国际目标,增加刚体和关节等物理元素,并在每个烘托帧中更新 Nape 国际目标。以下是一个简略的 Nape 物理引擎示例:

import com.soywiz.korge.nape.*
import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korim.color.*
import com.soywiz.korma.geom.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val napeWorld = napeWorld(gravity = Vec2(0, 500)) // 创立Nape国际目标
    val ground = napeRectangle(width = 512, height = 50.0) { // 创立地上刚体
        position(256, 450)
        bodyType = BodyType.STATIC
    }
    val ball = napeCircle(radius = 25.0, fill = Colors.BLUE) { // 创立球刚体
        position(256, 256)
        bodyType = BodyType.DYNAMIC
    }
    addChild(ground)
    addChild(ball)
    addFixedUpdater { // 更新Nape国际目标
        napeWorld.step(1 / 60.0)
        ball.updateFromBody()
    }
}

在这个示例中,咱们创立了一个 Nape 国际目标,并增加了一个地上刚体和一个球刚体。每个刚体都有一个bodyType 特点,指定刚体类型为静态或动态。咱们还运用 addFixedUpdater 办法,在每个烘托帧中更新 Nape 国际目标,并经过 updateFromBody 办法将 Nape 刚体的方位和旋转信息更新到对应的 KorGE 视图目标中。

音频播映 API

在运用音频播映 API 时,需求先导入相关的库,如 korau-core 和 korau-mp3 等,能够在 build.gradle.kts 文件中增加以下依赖:

implementation("com.soywiz:korau-core:$korauVersion")
implementation("com.soywiz:korau-mp3:$korauVersion")

KorGE 中的音频播映 API 首要包含 Sound 和 Music 两个类。

Sound

Sound 类用于加载和播映音效资源。

import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korau.sound.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val sound = resourcesVfs["mysound.mp3"].readSound()
    sound.play()
}

Music

Music 类用于加载和播映背景音乐资源。

import com.soywiz.korge.view.*
import com.soywiz.korge.scene.*
import com.soywiz.korau.sound.*
import com.soywiz.korau.sound.readMusic
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    val music = resourcesVfs["mymusic.mp3"].readMusic()
    music.play()
}

经过运用这些音频播映 API,开发者能够轻松地完成游戏中的声响效果和音乐播映。

输入事情处理 API

KorGE 中的输入事情处理 API 包含键盘事情、鼠标事情和接触事情等,能够经过增加相应的事情监听器来处理输入事情

监听键盘事情

import com.soywiz.korge.input.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    addKeyListener { event ->
        if (event.type == KeyEvent.Type.UP && event.key == Key.SPACE) {
            // 处理按下空格键的事情
        }
    }
}

在这个示例中,咱们运用 addKeyListener 办法增加一个键盘事情监听器,当空格键被按下并松开时,会触发事情,并在事情处理函数中进行相应的操作。

监听鼠标事情

import com.soywiz.korge.input.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    addMouseListener { event ->
        if (event.type == MouseEvent.Type.CLICK && event.button == MouseButton.LEFT) {
            // 处理鼠标左键单击事情
        }
    }
}

在这个示例中,咱们运用 addMouseListener 办法增加一个鼠标事情监听器,当鼠标左键单击时,会触发事情,并在事情处理函数中进行相应的操作。

监听接触事情

import com.soywiz.korge.input.*
suspend fun main() = Korge(width = 512, height = 512, bgcolor = Colors["#2b2b2b"]) {
    addTouchListener { event ->
        if (event.type == TouchEvent.Type.START) {
            // 处理接触屏开端接触事情
        }
    }
}

在这个示例中,咱们运用 addTouchListener 办法增加一个接触事情监听器,当用户开端接触屏幕时,会触发事情,并在事情处理函数中进行相应的操作。

经过运用这些输入事情处理 API,开发者能够完成游戏中的用户交互功用,如人物移动、攻击等。

定论

经过本文,读者能够了解 KorGE 的首要 API,包含图形烘托、物理引擎、音频播映和输入事情处理等等。这些 API 提供了丰厚的功用和灵活性,能够帮助开发者轻松地构建高质量的游戏应用程序。在运用这些 API 的过程中,开发者需求掌握 Kotlin 编程语言的基础知识,以便更好地理解和运用 KorGE 的 API。

鄙人一篇文章中,咱们将介绍 KorGE 中的图形烘托技能,包含 2D 烘托和 OpenGL ES 3 烘托等。经过本文,读者将了解怎么运用 KorGE 进行高效的图形烘托,以及怎么经过图形烘托技能完成更加丰厚的游戏效果。