00:08
大家好,我是小郭,今天我们来看看切换武器的代码功能如何实现。这是一期迟来的视频,除了比较忙,另外还有两个小伙伴们私聊,我说博客在电脑上是方便,但是手机不方便,我想了一下也是,所以这些天我申请了一个公众号啊,之前的东西都同步过去了,大家可以扫码或者搜索古玉小站关注公众号,有新发布的时候,大家就可以在手机上查看了。好,废话太多了,我们马上开始。打开UN,在上一期中我们已经配置好了完整的武器切换动画,如果有不懂的小伙伴们可以去博客或者公众号去看一下。接着我们选中角色,找到角色左手骨落和右手骨落,那在其下面分别创建一个空物题。它是用于使用IK把左右手的部落绑定到空物体上的。
01:03
那IK的绑定之前在拔枪第三期也已经分享过了,现在我们需要创建两个脚本,一个脚本是角色控制的脚本,另外一个是武器架,我们一起来实现一个简单的武器架。好,我们首先双击打开武器架的脚本。首先我们声明了一个武器的枚举,在这里我只有手枪和步枪,如果大家有其他武器也可以添加进来。然后我们需要声明一个武器的信息类。它里面有4组的参数,第一个就是武器的预制题。第2组是武器动态创建时的那个武器的位置参数,就是武器创建时放在角色双手上的位置,旋转和大小。那第3组和第4组就是角色左右手分别放在这个武器上面的一个位置,因为每一个武器它的双手位置都是不一样的,比如我手枪。
02:07
那他是双手举起来向前的,而我角色拿步枪的时候,他是双手,一只手是握住那个枪柄,另外一个手是握住枪头,双手是向下垂的。它是不一样的。好,然后第一个方法是手枪的参数,这里面已经设置好了武器的位置和双手的IK位置。那下面就是步枪,它是一样的。那这里的参数待会儿我会告诉大家如何获取。其实这里大家是可以使用那个有线状态机的思想去写的,呃,比如说声明一个接口的方式去做。而我这里就简单分开方法来实现就行了,大家可以按照自己的那个项目的思路去去实现。
03:02
接着我们需要声明一个武器架的类,它是用于管理角色的武器的,这里面有一个字典。剑就是枚举了,就是手枪或者步枪,或者是其他武器,然后有一个添加武器的方法。首先武器,判断武器是否存在,如果存在的话,我这里是直接把武器返回回去了,如果没有就把新武器放到武器架中。最后还有一个获取武器的方法。好,那到这里武器架的类就已经全部写完了。好,我们切换到角色的脚本。那角色的脚本上面有3个参数,它是控制角色移动的,我们主要看的是下面的参数,首先是武器的预制体列表,就是有多少武器你都可以放到这个列表里面。然后就是武器架的类,还有声明角色左右手的空物体。
04:04
最后一个就是角色当前拿着的武器是什么?在大函数里面,我们实例跨武器架。我这里直接把手枪和步枪也同时放到武器架了,如果武器多的情况下,大家其实是可以在用户操作的时候再放到武器架中,这样就可以减少那个空间。然后我们来到update函数。那当用户点击一键的时候,就是我们,呃,切换到手枪的时候,我们首先启动拔枪的代码。然后把角色的动画组切换到手枪的动画组。再把手枪上的那个上升的动画图层权限设置为1。好,我们点进去看一下这个图层权限的代码,它是怎么样的,它是先把其他的所有图层的权限重置为0,也就是相当于禁用掉这些图层。
05:05
然后再把指定的图层权限设置为1,来启动指定的图层。然后我们重新回到update函数,接着就是动态创建武器了,我这里开了一个携程去实现这句话,就是启动携程。那我们跳到动态创建武器的方法里面看一下。它有一个武器的枚举参数标识的,我需要动态创建什么武器。然后就是一个先延迟携程0.25秒,它在其中,那为什么会这样子呢?这是为了配合那个拔枪的动画的,就是等角色的手放置到腰间或者背后的时候,我们才动态创建武器,这样子的话就会看上去好看一点。其实这种方式在多武器的时候它是不准的,因为每一个武器它发出的那个动画都都是时间不一样的,如果大家需要非常准确的去控制创建武器的时间,可以在各个拔枪的动画中,就是拔出武器的动画中插入一个事件来实现。
06:20
好,接着我们先判断角色上面有没有武器,如果有的话,就把上一把武器删掉,那就可以了。然后再从武器架中取出武器。来赋于给角色当前的武器变量中。然后下面的就是那些武器的信息了,分别赋予到角色或者是实力化武器上面。好,最后我们下面还有一个方法,它是IK的方法,它主要的作用就是把角色的左右手骨络绑定到左右手的空物体上,这样可以使使得我们那个操作空物体的时候,他的手会跟着空物体来进行放置或者移动。
07:04
好,代码到这里就已经全部搞定了,那我们回过头来看看刚刚武器的参数,他是怎么去拿的。我们回到Unity。我们把武器放到角色的右手上,然后点击运行。在运行的环境下去调整武器的参数。还有左右收。的空物体的那个参数,然后把它们记下来,写到代码中,那就可以了,很简单。今天的这期是切换武器的最后一期,感谢大家的观看,我是小郭,期待大家的点赞关注我们,下期见。
我来说两句