使用C实现近战连击系统上

时间:2022-12-31 09:46:20阅读:2655
想要一起学习C 的可以加群248894430,群内有各种资料满足大家在这篇文章中,我们将在C 实现一个简单的 近战连击系统。此外,一个 基本动画合成技术将会是本篇文章所需要的基础知识。你会发现我们将使用大约30行代…

想要一起学习C 的可以加群248894430,群内有各种资料满足大家

在这篇文章中,我们将在C 实现一个简单的 近战连击系统。此外,一个 基本动画合成技术将会是本篇文章所需要的基础知识。

你会发现我们将使用大约30行代码,其余的将在编辑器中使用简单的通知。所有的代码可以在我的 GitHub上找到。

在我们投入到创建我们的系统之前,这里是我的最终结果

本教程需要你熟悉以下的条款:

角色编辑器

动画序列

混合空间

状态机

但是这不以为着如果你不是上述这些方面的专家,就不能创建近战格斗系统。

列出必要的资源

这里是一个资源清单, 为了创造了我们需要 的系统:

骨骼网格(用于我们的角色)

三动画:

空闲动画

运行动画

攻击动画

在最终结果视频演示的组合移动实际上是一个动画,其中包含三种攻击。然而,正如上面所示,我基于动画创建了三个组合移动。这背后的逻辑其实很简单,你可以将你的动画分成很多部分,然后告诉引擎需要播放哪一部分。想要一起学习C 的可以加群248894430,群内有各种资料满足大家

这里是我使用的完整的攻击动画

理解动画混合的概念

现在你可能会想知道为什么我的攻击动画和我的最终结果是完全不同的。这与我已经实现的动画混合和我想要的动画有关。 blending 可以让你在同一时刻播放两个不同的动画(甚至是更多)。基于我的最终结果,你可能会认为这很糟糕。 嗯,这种情况肯定不是我想要的!

收集必要的资源

如上所述,你的结果可能会有所不同。这是因为我无法分享我的骨骼网上面使用的动画,但是,有这个问题的解决方法!

访问Mixamo的官方网站

Create a free acount

Choose a character of your liking

Choose the three animations of your liking and “link” them to your character

创建一个第三人称的模板,导入你的角色和他的动画,让我们开始创建系统吧!

了解系统的逻辑

在我们开始输入代码之前,我们先一起来探究一下系统背后的逻辑关系。为了实现对视频的结果, 我们会使用一些动物 通知通知我们的代码, 如果玩家在正确的时间”点击攻击键“,他将进行一个组合移动。

例如,如果我们执行了两次打击,我们在正确的时间点击攻击按钮,我们将能够继续进行下一次攻击。

创建一个动画实例类以及解释什么是Animation Montage

创建一个基于动画实例的C 类,并命名为MyAnimInstance,然后,在头文件内,键入下列代码:

切换到你的类的源文件然后键入下列实现:

在继续下一步之前,让我们后退一步,来解释一下以上的代码会发生什么样的结果

Bool变量 bAcceptsSecondAttackInput 以及bAcceptsThirdAttackInput是我们要用以确定该角色可以执行第二和第三次攻击的标志。这些变量将被设置为true,从Persona Editor使用我们的动画通知。如果这些变量是false,那么这个字符只能执行基本的攻击。

UAnimMontage*是Animation Montage的参数。本篇教程,考虑 Animation Montage本身就是一个当有一些事触发它时,它会播放的动画。

稍后我们将实施攻击的功能 将包含我们的组合逻辑的动作。

准备我们的角色和设置输入

转到项目设置并指定操作映射:

然后,转到你的角色的头文件并添加下面的函数声明:

然后,切换到你的源文件和头文件 包括以下:

#include “MyAnimInstance.h”

当你完成了这些,转到SetupPlayerInputComponent 功能并添加以下的动作映射:

一定要改变“performmeleehit”匹配你的动作映射的名称。

此外,为攻击函数提供如下实现:

保存并编译代码。

扩大我们的动画实例类

基于已导入的骨架和创建的类创建动画蓝图

这是我的案例截图

然后,在您的事件图中添加以下逻辑:

了解Cached Poses相关需要

切换到您的AnimGraph和添加一个新的状态机。然后,创建一个新的 缓存的姿态 基于你创建状态机像下面的截图显示:

在我们继续之前,让我们解释cached pose是什么,为什么我们使用它。

如上所述,我们需要创建一个简单的动画混合。如果您试图将您的状态机连接到多个节点,编辑器将断开以前的任何连接,并将您的状态机连接到您单击的节点上。这就是为什么我们存储动画缓存的姿势,然后 使用它来融入我们的动画。但是为什么我们不能把所有的东西都连接到我们的状态机上并用它来完成呢?好吧,答案很简单,没有。

听了以下的解释,一切都会变得明白

创建多个slot

当你存储 cached pose,右键单击某处 使用 你上面创建的缓存的姿势。然后,创建以下节点:

这意味着从我们之前存储的缓存的姿势(包含状态机)我们将得到的动画是目前在DefaultSlot播放的画面

但是等等,什么是默认插槽?记住,我们要在我们的人物动作播放攻击动画,这意味着将 我们需要 分 我们字符骨架为两部分(槽)。对于这个例子,我们需要两个部分-插槽:

一个插槽, 包含跑动动画(defaultslot)

一个包含攻击动画的插槽

当你创建defaultslot节点,选中它并在细节选项卡,点击显示图标:

然后,点击添加插槽图标,如下图所示,并创建您的新插槽:

一旦你添加你的新槽, 选择 defaultslot节点并设置其槽的名字 为UpperBody。

想要一起学习C 的可以加群248894430,群内有各种资料满足大家

使用C实现近战连击系统上

魔兽争霸不死族的CN连击指法

一般F1 F2在普遍的高手中很少用
因为DK会和近战部队一起编进1对,51自然会编到远程部队 2对。
其实秒的话速度也不用太快,毕竟C还有一定的距离,而N属于瞬间技能。所以先C再N的话,基本可以达到同时击中在对方身上,这样才更接近真正意义上的“秒”!!!!!

使用C实现近战连击系统上

机战OG2里面的C武器是什么?

一般来说,C武器都是近战攻击
技能最后标个C字母
于是你在靠近敌人使用这个技能的时候,如果敌人紧挨着后面还有一个敌人
那么就会出现一个穿透箭头的符号,一般C武器到了高级,可以穿透2个敌人
也就是可以一下打3台机,基本主角的话杀小兵就是3连杀了。
这样可以快速清敌。
一般来说,主角机都会C攻击,比较牛的驾驶员也会。是近战主要攻击手段。

评论

  • 评论加载中...