[Kotlin写游戏教程十]使用Input输入系统

[Kotlin写游戏教程十]使用Input输入系统

作者:丫丫    浏览次数:353    2021-06-15 15:51:43

前面几篇都像是在介绍透过画面视觉呈现来给玩家刺激,但是大部分游戏里的互动,几乎都还是由玩家来主动进行操控。

常见的行为就是透过滑鼠、键盘、或是游戏摇杆,有的游戏也有透过麦克风来进行声控,若是手机游戏,最直接的就是萤幕触控,再来就是利用三轴加速来实现的游戏类型,还有用镜头侦测影像来设计的游戏!

KorGE当然也有提供这些从外部接收使用者输入的Input类别,这一回笔者只尝试了滑鼠跟键盘,这些可以直接在开发电脑上比较快进行示范的输入类型来练习(手机的触控萤幕要再后面一点发布到手机平台上测试再来实验)。

侦测Mouse滑鼠座标
取用输入系统的方式很简单,只要呼叫以下这行,就能取用正在执行程式的所有输入。

val input = views.input
我们写一个测试范例,将接受到的滑鼠座标数值透过Text物件印在画面上,将input.mouse的x跟y数值印出来。

text("").addUpdater {
text = “Mouse Position:${input.mouse}”
position(input.mouse.x, input.mouse.y)
}
程式执行,滑鼠指标移到画面随意移动,程式都能侦测并印出目前所在位置。

侦测Key键盘输入
键盘输入的状态分为三种,justPressed、pressing跟justReleased,就是一开始被按到,持续按跟按了放开。这里我们写了侦测键盘的空白键来测试。

text("").addUpdater {
when {
input.keys.justPressed(Key.SPACE) -> {
println(“Key justPressed”)
}
input.keys.pressing(Key.SPACE) -> {
println(“Key pressing”)

    }
    input.keys.justReleased(Key.SPACE) -> {
        println("Key justReleased")
    }
}

}
程式执行后试着按下键盘上的空白键再放开,三种状态就会在console上印出来,如果空白键按得越久,key pressing就会被持续侦测印出讯息。

Event-based High-level API
KorGE也有在View物件提供比较High-level的做法,最常使用的就是onClick这个方法了,所以滑鼠的跟键盘的事件侦测当然也少不了。
滑鼠动作可以写成以下样子:

mouse{
click{
println(“mouse click”)
}
over{
println(“mouse over”)
}
down{
println(“mouse down”)
}
up{
println(“mouse up”)
}
}
而键盘一样可以改写:

keys{
down(Key.SPACE){
println(“Key down”)
}
up(Key.SPACE){
println(“Key up”)
}
}
总结
学习这些Input相关资料当然就是要应用在游戏里头啰,如果你的游戏是需要角色的移动由玩家操控,你就要侦测上下左右的键盘了。而笔者特别挑了侦测空白键就是想要拿空白键当作外星人跳耀的触发按键啦!怎么实作出来,我们会再后面讲说角色部分的时候再来拿来应用啰!

上一篇:[Kotlin写游戏教程九]使用SpriteAnimations-外星人动起来了!
下一篇:2021年6月16日意大利电信和思科签署了云业务服务合作协议-云资讯