第三人称动作游戏开发日志

[复制链接]
atmhrc | 2018-12-11 21:22:45 | 显示全部楼层
今天我们来制作主角的另一套动作-锁链动作。
这个锁链动作技能在这个游戏设定中相当的关键,他在主角的行为动作中占了大部分,很多关卡中设定的场景都需要锁链动作来通关,而且我也考虑将锁链作为一个必杀技放入到角色的打斗动作当中去(又为自己挖了个坑。/。。)

首先我们来进行锁链动作的设定和分类。
从设定上来讲,我们的角色拥有一只机械的左手,这个机械手臂可以被发射出去,而后端连着锁链,链接着主角的胳臂。
del.png
所以主角可以利用这个特性,将手臂发射到周围的场景当中,通过锁链来攀援或者拉拽周围的物体,(打斗的设定之后再去考虑)因此,在这个项目当中,角色利用锁链能实现的动作有这么三个:
锁链荡漾,将锁链发射到高处的一个物体上(比如说石墩)然后利用锁链的弹性,将自己从低处荡漾至高处,也可以在荡漾的过程当中,连续发射锁链,进行连环的荡漾(类似于蜘蛛侠在城市高处靠蛛丝荡漾的情景)
delll.png


锁链索降,这个动作顾名思义,当角色在高处的时候,用左手攀住石头,然后松开锁链,角色便从高处迅速索降下去。到达下方的时候收回锁链。
拖拽石块,举个例子,玩家要从一个台阶处,跳到对面墙壁的时候,对面墙壁没有可以攀援的敌方,而对面的墙壁上有一个把手,玩家可以把自己的机械手臂抛射过去,拉住墙壁上的把手,然后吧墙壁内的石块给拖拽出来,供玩家在跳过去的时候作为一个攀援处
dellll.png



大概就是这些,如果有新的动作还可以后面进行补充,那我们就从第一个动作开始做起,第一个动作是定点荡漾。
这个动作的制作思路是这样的,吧动作分解为:发射部分,拉拽部分,旋转部分,下降部分,着陆部分。

发射部分指的是,角色朝定点发射自己手套,然后手套抓住定点,锁链吧玩家和定点2者链接起来。这个部分的制作思路主要是播放动画蒙太奇,然后由动画蒙太奇通知在角色发射出手套的那一刻时机通知给角色蓝图,由角色蓝图的节点完成锁链的发射。
关于锁链的制作主要是在角色内创建一个cable,然后吧cable绑定在角色的手臂部分(建模的时候,吧角色的左手截下来,然后为角色单独的创建一个机械左手模型放置在角色蓝图当中)
随后在资源管理器中创建一个定点蓝图,当荡漾开始的时候,角色蓝图获取定点蓝图,把他以一个变量的形式防止在角色蓝图内,并获取定点的世界坐标位置,并将这个世界坐标位置通过公示的运算,转换为相对于角色的相对坐标位置(因为cable的end location是相对坐标),然后把这个相对坐标赋予给cable的end location。
这个定点蓝图的组成部分主要有2个部分,1是玩家荡漾完成以后最后的落点,可以先拿一个方块先做个样板,2是荡漾开始的范围边界,这个的话我在蓝图内创建了一个sphere collision,然后通过这个sphere来碰触玩家,如果玩家进入到可发射锁链进行荡漾的范围之内,定点蓝图会以一个变量的形式传输给玩家蓝图,随后激活可进行荡漾的状态。
delllll.JPG
拉拽部分指的是,当玩家发射锁链以后,链条从玩家的起始位置开始吧玩家拉拽到定点的正下方(荡漾最低点),此时玩家的朝向由原朝向逐渐变为荡漾的方向,这个拉拽的时间是固定的,由角色蓝图内部的一个时间线来控制。通过时间线,来获取玩家发射锁链和定点蓝图荡漾最低点的位置,随后update玩家的location和rotation。

旋转部分指的是,玩家到达荡漾最低点以后,在空中转一个大圈(由荡漾最低点到荡漾最高点的一个半圆)这个半圆的路径主要是由timeline来输出玩家的位置变化,同时玩家自身播放一个空中转体的动画(之前考虑过由根骨骼动作来做,根骨骼动画做的好处就是可以很直观的在动画软件中制作角色的荡漾路径,但是缺点就是荡漾的圆环大小就被确定下来了,而用时间线来做,荡漾的半径大小可以在关卡当中随意调整,你只要设置荡漾的最低点和最高点的位置就可以了)
从最低点到最高点是一个圆环运动,这是很基础的中学位移问题,在垂直方向上,角色做由下到上的直线运动,在水平方向上角色做从原地到正前方再回原地的往复运动。
dellllll.JPG

下降部分和着落部分相对而言非常简单,角色到达最高点以后,让角色做自由落体就可以了(注意吧玩家的输入给屏蔽掉,以免角色在下落过程中,玩家有位移输入,导致角色下落偏移,落在着陆点外面)
着陆部分比较复杂的地方是角色的锁链收回,这里我想到的方法是用一个链条的模型直接K动画,这个方法最直接也最实用,在动画软件中能直接K出自己想要的收回动画效果,所以当角色下落的时候将角色蓝图内部的cable直接invisible,而吧播放锁链收回动画的锁链模型visible就可以了

以上就是荡漾的全部阶段,而蓝图节点的编写也按照这个阶段一部分一部做就可以了,因为有时间的先后顺序,所以做起来也并不麻烦。
delllllll.JPG
最后的连续荡漾制作,我们只要设定一个区间就可以了,我定义角色在荡漾最低点和旋转中心位置这个区间可以发射下一次锁链(形状大概是一个半圆)然后,后一个定点蓝图的sphere与前一个定点荡漾的旋转路径部分重叠,当角色在前一个定点荡漾过最低点以后,后一个定点蓝图的sphere就会和角色碰触,角色蓝图的定点蓝图变量就会被刷新,然后玩家就可以做出第二次发射锁链的操作,而后的荡漾操作无非就是反复重复而已。

最后做出来的效果还不错


回复 支持 反对

使用道具 举报

dubaiworld | 2018-12-13 19:25:08 | 显示全部楼层
定一个,niubi
回复 支持 反对

使用道具 举报

qq254348470 | 2018-12-18 20:47:40 | 显示全部楼层
厉害厉害了。。。
回复 支持 反对

使用道具 举报

坂口美穗乃 | 2018-12-19 09:50:10 | 显示全部楼层
HRC老师!可不可以多做一些关于局域网对战的视频! 感觉这块的知识点好难啊!看完您的教程,应用到我的项目中 感觉自己像个废人一样。。。
回复 支持 反对

使用道具 举报

atmhrc | 2018-12-19 22:46:54 | 显示全部楼层
坂口美穗乃 发表于 2018-12-19 09:50
HRC老师!可不可以多做一些关于局域网对战的视频! 感觉这块的知识点好难啊!看完您的教程,应用到我的项目中 ...

在了,在了,最近在做一个局域网第三人称射击游戏的demo,类似于绝地求生的,demo大概再过几周(年底)就可以做好,到时候放出来给大家看看,如果觉得不错的话,会录制成教程。
回复 支持 反对

使用道具 举报

atmhrc | 2018-12-19 23:14:35 | 显示全部楼层
今天我们继续来制作格斗游戏的角色动作部分。接下来轮到锁链下降和物体拖拽的动作,这2个动作相对于锁链荡漾还是比较简单的。


锁链下降是角色在高处的时候,用机械手攀住一个地方,然后打开锁链,下降到低处,然后再收回锁链。这个动作的制作思路是这样的,创建一个下降碰触蓝图,当角色碰触到这个蓝图的时候,就可以激活锁链下降动作。
下降的角色位移使用timeline来控制,当timeline播放的时候,首先获取角色的起始位置,然后再决定一个下降终点的位置。利用timeline来使得角色在这两点之间进行位移(原理还是等同于timeline制作开关门的效果,或者也可以形象的理解为升降电梯),在下降的过程中同时赋予角色一个下降的状态(用布尔变量定义就可以了)。
在下降的过程当中,锁链的顶端会固定在攀援处,这个只要让timeline来update下降起始点的世界坐标位置就可以了,然后再把世界坐标位置换算为相对坐标位置,然后set到cable的end location就可以了。最后当角色下降完毕的时候,让角色播放收回锁链的动画。
在这个项目当中,我会一般把锁链下降的最低点放置到离地面一定距离的地方,不要让角色一次性下降到地面上,毕竟在后面还会设计一个空中旋转跳跃击杀的动作。而锁链下降在半空结束正好可以让玩家触发这个击杀动作,从而使角色在场景当中的运动更具有节奏感和可搭配性

最后制作出来的效果感觉还算不错



锁链拖拽这个动作是角色攀援在墙壁上时,将锁链甩到对面的墙壁上,然后拉拽对面墙壁上的石块,供角色跳跃到对面所用。
这个动作的制作原理其实和前面的锁链下降一模一样,锁链下降是把机械手固定在高处,然后角色用锁链进行下降移动,而锁链拖拽是角色固定在墙壁上,然后机械手拉拽住石块做水平移动。所以在链接蓝图的时候,蓝图结构基本相同,无非就是2个动作移动的对象不一样,第一个是角色做下降运动,而第二个是石块做水平移动,其实道理是一模一样的。
所以我们同样是创立一个拖拽蓝图,当玩家在墙壁上攀援,并且按下技能键的时候,对墙壁对面的拖拽蓝图进行一个检测,如果检测到对面有
拖拽蓝图,就发射锁链进行拖拽。
同样也是获取拖拽石块的一个起始点以及拖拽终点,利用timeline来set石块的位移就可以了,并且update锁链末端的end location。
当拖拽结束以后,播放收回锁链的动画,当然了一般来说这些石块只能被拖拽一次,如果有需要的话,以后可以再添加一些可以被反复触发的机关,也是挺不错的。

最后做出来的效果还算不错



这个拖拽动作有一个问题,就是当角色使用拖拽的时候,由于是攀援在墙壁上的,所以摄像机视角在观察的时候,墙壁会对摄像机产生一个block,这使得玩家无法准确的观察到墙壁对面被拖拽石块的位置,或者玩家使劲把镜头对准被拖拽石块的时候,角色反而被墙壁遮挡,犹如视屏中展示的那样,所以可以考虑玩家在通过这些场景的时候,给玩家一个全景的摄像机视角,这样也是挺不错的。

这个功能我们可以称他为鹰眼视角或者监控视角,我们会在后面日志中来讲解他的制作思路。

回复 支持 反对

使用道具 举报

坂口美穗乃 | 2018-12-21 13:39:00 | 显示全部楼层
atmhrc 发表于 2018-12-19 22:46
在了,在了,最近在做一个局域网第三人称射击游戏的demo,类似于绝地求生的,demo大概再过几周(年底)就 ...

额 好的,强烈!!!!!!!希望您可以录一个专门讲联机的教程,因为靠单一的项目需求去讲联机的知识,在别的项目里很难用到,我在aboutcg上买了您的局域网游戏教课第一部,也看了您的RTS游戏教程,但我遇到的问题是您教程里没有的。例如:
1.玩家A创建房间(Create Session)在这个节点里设置最大连接数2。然后玩家B和玩家C同时点击加入(Join session),按照预想,此房间里应该是两个人在玩,但实际上玩家B和玩家C都挤进去了。我是开了三个窗口,在A窗口创健房,分别快速点击BC窗口的加入,就出现了上述所说的三个玩家都加入进去了。这个您的教程里并未出现此问题,原因是,您的链接数都比较大,局域网游戏教程第一部 视频里您是设置的64个玩家,所以并未遇到此问题。
2.如何像魔兽争霸那样,玩家A创建房间并写好房间名称之后,局域网里其他玩家能看到玩家设定的房间名称?并如何看到组队玩家的加载进度条,如英雄联盟里玩家都选好英雄进入对战地图时的那个加载进度条?
学生希望您可以专录一部多人游戏联机的教程,贵一些都没关系,因为这方面的资料太难找了,并且希望您可以多讲一下原理,感谢!不管怎样我都是您的忠实学生!!
局域网这块真的太难了!
哦对了,我想请问老师,战争迷雾这个功能,您后来又有研究了吗?
回复 支持 反对

使用道具 举报

lyjkensou | 2018-12-21 14:17:24 | 显示全部楼层
爬墙的制作方法很有启发性!!
回复 支持 反对

使用道具 举报

南森 | 2018-12-28 18:31:54 | 显示全部楼层
支持,加油!
回复

使用道具 举报

atmhrc | 2019-1-4 15:25:59 | 显示全部楼层
坂口美穗乃 发表于 2018-12-21 13:39
额 好的,强烈!!!!!!!希望您可以录一个专门讲联机的教程,因为靠单一的项目需求去讲联机的知识, ...

谢谢支持,局域网房间列表的话,回头有机会我会单独录制教程讲解一下,战争迷雾那一块的话,后来没有研究了,因为网上的资源很多,论坛里也有相关的帖子,虚幻商城里也有很多战争迷雾的模板。貌似群里有一个群友自己也研究出了一套方法。如果有需要的话,回头也可以录制一下教程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则