获取更多信息请下载APP

编程大师第一步:用键盘控制移动

来源:    发布日期:2018-02-13 16:55:07   阅读量:0

编者按:由于可能导致青少年沉迷,以《王者荣耀》为代表的网络游戏被许多家长视若虎狼。然而,游戏本质上是程序——学习游戏编程是个有趣、有益的过程。本刊特邀清华大学终身学习实验室的张飞老师开辟专栏,向读者传授游戏的“正确打开方式”。

撰文/张飞(清华大学终身学习实验室课程设计主管)

很多学习编程的孩子都面临这样的情况:学了各种教程,明白了每一个功能,但还是编不出自己的东西;或者做来做去也没有拿得出手的作品,最后连新鲜感都没了。你缺的到底是什么?是“想法”。

清华大学终身学习实验室张飞(Alex) 老师的《想·法》 Scratch 编程课,初衷就是让你掌握“想”和“法”——“想”是思想、是思路,是告诉你如何去构思、设计程序,并一步步拆解落地;“法”是方法、是技巧,是让你不但懂得模块,更会用模块去完成设计的各种功能。

设计各种游戏时,都有一个最基本的功能要实现——用键盘控制游戏里的角色。我们就来学习一下,最常用的控制方法如何实现。

第一种:贪食蛇控制法

难度系数:★☆☆☆☆

“上下左右”是最简单的控制方式:按不同的方向键,就可以让角色朝向不同的方向。只要按键不松开,角色就一直前进。不过实际上,这种控制方法在游戏设计当中几乎不可用,因为太不灵活(特别是当你需要角色斜着走的时候,这种控制方法让你想砸电脑)。方向键控制法的经典场景之一是《贪食蛇》游戏:你能让蛇横着走或者竖着走,但不能斜着走,而且要一直走。

编程时首先要给角色做“初始化”:确定游戏开始时角色的状态,包括位置、大小等;随后设置角色在程序开始时就开始移动,不需要玩家启动。最后是用键盘控制方向的命令。

第二种:坦克控制法

难度系数:★★☆☆☆

坦克是个笨重的大家伙,运动迟缓。为了模拟它的特点,你可以让左右方向键控制坦克旋转、前后方向键让坦克前进或后退。

控制方法其实不难。首先设置初始化;控制坦克的指令部分,用左右键控制坦克左右掉头(因为坦克掉转慢,所以转向的数值设得很小,只有2度);用上下键控制前后移动——前进是“移动4步”,后退就是“移动-4步”。

自己动手做出来吧。坦克可以一边转向一边前进或后退的坦克大战一定很爽!

第三种:战机惯性控制方法

难度系数:★★★☆☆

前面几种控制法虽然越来越灵活,但是“手感”并不是很好。你需要一种体现“惯性”的控制方式(角色在你松开键盘后慢慢停下来)。

我们用战机做例子:按下方向键的时候,战机匀速运动;松开方向键后,战机速度不停地变慢,直到静止。我们首先将战机 X 轴和 Y 轴方向的速度设置为“变量”(初始值均为0);玩家按下方向键会赋予变量一个恒定值(此处是6或-6),战机匀速运动;而松开按键时,变量的值就会因反复乘以0.9而衰减——战机就会慢慢减速停止。

第四种:滚球的控制方法

难度系数:★★★★☆

有些游戏需要角色“滚动前进”的控制方式。我们在惯性控制的基础上稍加改动就可以——只要设置一个变量作为球旋转的角速度,玩家停止按键的时候,转动就会缓缓停止。

首先,你要将角色的“旋转模式”设定为“任意”,然后建立两个变量:“球速X”和“球转速”。“球速X”作为球的 X 轴方向的速度;“球转速”则作为球旋转的速度变量。其余部分和战机的控制代码很像。只要你按下方向键,就赋予两个变量不变的值(X轴运动速度10,旋转角速度15),球就会向着一个方向匀速运动,同时匀速旋转。当你不再按键时,两个变量的值就会不停乘以0.9、不停衰减;两个变量值又在不停的改变球的坐标数值和旋转角度,所以球就会移动得越来越少,并转得越来越慢——看起来非常逼真。

第五种:僵尸围城控制方法

难度系数:★★★☆☆

很多“打僵尸”类的游戏采用俯视视角下——僵尸从四面八方向画面中心的玩家涌过来。玩家除了要上下左右移动躲闪,同时还要向各个方向射击。这种控制方式是鼠标和键盘的结合——用键盘控制移动、用鼠标控制面朝的方向。

用鼠标控制朝向很简单,让战士始终“面向鼠标指针”就好了;键盘控制移动的部分和坦克控制法几乎一样。不过右手要用鼠标,左手为了顺手,把控制键由方向键改成了 WASD。

至此,几种最常用的控制方法都介绍完了。全部掌握以后,你既可以从功能出发设计游戏,也可以把它们当做“零部件”整合在你的游戏里。当然,实际游戏设计中肯定还会涉及更多的控制形式。■

(本文转载自“ Alex老师的大脑洞”微信公众号