之前在unity里尝试用过语音控制,当时的想法是实时控制游戏角色的移动与攻击,这在通过在线api解析语义的方式下体验一般,不过也想到在实时性要求不那么高的互动场景应该可以用起来。这里就在微信小游戏中尝试一下。
语音交互自然需要一个对象,像我这种手残人士最适合的设计当然就是卡通的小动物了。经过多次修改,在iPad上完成了形象设计(有点丑,有点歪,大家不要见怪):
设计好形象之后就可以设计动画了。一帧一帧的画出连贯的动作。因为偷懒,所以一个动画也就几帧,准备了下面几个动画:
- 眨眼。1帧,空闲状态的时候播放,避免什么都不做的时候画面看起来太死板。
- 挠头。2帧,录音结束发给服务器等待服务器结果的时候播放,使得能在话音刚落时就给出反应。
- 微笑。1帧,对它说“笑一个”的时候播放。
- 举牌子。3帧,狗狗不会说话,要通过写字的方式和玩家交流。
接下来就可以参考飞机示例,完成游戏的代码部分。
首先新建一个class InterAction,在constructor中进行各种初始化,主要是加载一些图片资源,注册事件等:
constructor(c, returnTitle) {
ctx = c
this.returnTitle = returnTitle
this.bg = wx.createImage()
this.bg.src = 'images/bg2.png'
this.recordBtn = wx.createImage()
this.recordBtn.src = 'images/record.png'
this.recordBtnDown = wx.createImage()
this.recordBtnDown.src = 'images/recorddown.png'
this.btn = this.recordBtn
this.dog = new Dog()
this.idleFrameCount = 0
thi