大家好,我是小鱼儿,我又来了!感谢各位对我上一期有关“时间回溯”的视频的支持,是你们让我感觉到了我这个有用。
这次的视频题材其实源于近几年来party game在市场上越来越多。这些party game基本上源于当年在街机厅的联机打斗还有后来家用机上的本地对战。往远了说有“恐龙快打”、“彩京1945系列”等等经典名作,往近了说也有“胡闹厨房”、“动物派对”等大量十分火爆的游戏。
恰好Unity在2020年更新了一套全新的输入系统,原生解决了很多原来需要自己手动控制的问题。所以在这我就尝试一下利用这套全新的输入系统做一个最简单的本地多人游玩的demo,分享一下这套新系统最基础的使用方法。
这次我做的游戏玩法非常简单,就是两个人分别控制一个角色,如果把对方逼到墙角就能得分的这样一个游戏。有一点像是那种战斗陀螺吧。
【准备工作】
首先,导入图片,创建出我们需要的玩家的物体,并且给它调整一个方便识别的颜色。在这里我先导入了一个圆形的替代图片,等基本功能都做完之后再替换成更好看的美术资源。
截至视频发出的时候为止,Input System还不会默认被集成到工程中,而需要我们自己导入到工程里。所以在这需要我们打开Window选项点击package manager,输入input后就能找到Input System了,这里根据网络情况有可能需要稍等一会儿。点击Install进行安装之后,unity可能会要求重启编辑器。
重新启动编辑器之后,打开project setting找到Input System,创建一个设置文件,在支持设备里添加手柄和键盘。
【创建输入配置】
对于InputSystem,Unity使用了名叫Input Action的配置文件来记录键位的信息。所以我们需要在空白的位置,右键创键一个新的Input action后双击编辑。
打开后,新建一个Action Map,然后我们需要在Actions里添加上需要响应的动作,并绑定上想要的键位。
这里我先创建了对应移动的动作,然后为动作类型选择了数值类型。之后绑定了手柄的左摇杆作为输入之一。
接下来再绑定键盘。在这需要选择2D Composite。选定之后会出现对应二维矢量上下左右四个方向的键位。分别选择之后再点击Path,然后直接点击旁边的listen键,再按下需要绑定的按键,Unity就会自动帮你记录下来了。
设定之后点击保存配置,也可以选择Auto Save之后让Unity自动保存所有操作。
关闭后,给玩家添加一个Player Input组件,可以看到底下有一行字写着“会在设备丢失、重连等等等情况下向GameObject发送消息”。那么在这,我们把刚刚创建好的输入配置拖进Actions里。之后随意选择一个其它物体,再点回来就可以看到发送的消息里多出了OnMove(),也就对应了我们刚刚创建的那个名为Move的动作。
【游戏功能】
我们把玩家移动必备的组件添加上,除了给我们自己编写的Player Controller代码和碰撞区之外,还需要添加一个刚体,并且把刚体的重力去掉。
然后就是写代码的时间!打开代码编辑,这里最重要的就是需要用到OnMove()也就是刚刚我们添加输入后产生的新的函数。不要忘记使用这个函数需要添加UnityEngine.InputSystem的命名空间。之后就可以通过OnMove()获取移动对应按键的值。
在能够获取这个值后就可以正式开始写移动功能了。
这个时候运行一下游戏,已经可以看见效果了。这里还可以调整一下刚体的阻力和惯性等参数让移动更自然,这里就不赘述了。
我们的规则决定了我们需要保证玩家只能在场地内活动,所以需要建立空气墙让玩家不会飞出去。另外我想要玩家在碰到碰撞体时还会往回弹一些,所以我还创建了物理材质赋给玩家。
【多人部分】
关于本地多人游戏的部分,前面提到过新的Input System让本地合作的实现变得很简单,只需要创建一个挂载了player input manager 的游戏物体,再将player设置为预制体放入input manager,按下不同控制器任意按钮后,就会自动生成玩家的预制体。
不过可以看到,这样会带来一个问题,生成出来的玩家无论是位置还是其它什么的初始状态都是一致的。所以这里又额外增加了一些代码,通过获取输入对应的玩家编号来区分玩家,并修改对应的状态,在这就是位置和颜色。当然这里因为只是为了在替换资源之前进行简单的区分,所以把很多的值暂时写死在了代码里,所以不要吐槽我丑陋的代码。
在玩家的部分制作完毕之后,我又添加了一个简单的UI提示操作,以及显示分数。对应的也添加了玩家撞到碰撞区之后会给对方加分的功能。
这就是目前运行的效果。
在确认基础功能做完之后,我又替换了玩家的形象以及场地的背景,同时针对场地的图片更改了碰撞区的形状。因为两个玩家的素材不同所以我把替换颜色的部分改成了替换玩家的图片。
并且利用玩家移动时输入的向量值计算并修改玩家朝向。
最后的成品就像开头展示的那样。这个视频里只展示了最基础的输入控制,而其实全新的Input System所提供的功能还有很多,希望这个视频能抛砖引玉。再次感谢你的观看,下次再见。
如果这个知识分享,解决了你一些开发上的问题,别忘了给我B站来个三连!
图文版及工程文件下载
暂无关于此日志的评论。