‫你好, 欢迎｡
‫这节课的主题是, 参与者的取损函数, 以及我们怎么叫它.
‫让我们深入了解一下｡
‫所以为了让我们能够对某些东西造成伤害, 我们需要有一些我们可以击中的东西｡
‫所以让我们转到我们的内容浏览器路线, 并带来了一个BP射手字符｡
‫因为实际上发生的是,
‫如果你把一个角色带到场景中, 那么虚幻会自动让这个角色由人工智能控制, 而在玩家开始时产生的角色将由玩家控制｡
‫所以这很好｡
‫这正是我们想要的行为｡
‫如果我继续点击alt p, 你会发现我实际上是在错误的产卵点,
‫所以也许我想删除这第二个球员开始｡
‫如果我现在按alt p我们就在正确的位置了｡
‫这就是我的敌人｡
‫我可以向敌人射击｡
‫我得到了命中效果｡
‫但很明显我没有造成任何伤害｡
‫至少现在还不行｡
‫破坏是一个两部分的过程｡
‫第一部分发送损坏, 第二部分接收损坏｡
‫在这节课中, 我们将讨论如何向播放器发送损害以及与此相关的函数调用｡
‫我们要看的主要的一个是参与者Dot H, 我们要找一个函数调用, take
‫damage｡
‫你可以看到这里有一个虚拟函数｡
‫它会传回浮点数｡
‫它返回的是作用在演员身上的实际伤害, 实际的伤害量.
‫输入的是损坏金额, 一个损坏事件, 它给了我们更多的信息｡
‫造成的伤害, 我们有一个煽动者｡
‫所以这就是说谁是控制器负责造成这种损害？
‫然后是损害的致因, 也就是行为人的责任？
‫所以在这种情况下, 它可能是一把枪｡
‫或者是说爆炸的炮弹, 落在你身上的石头, 射伤你的枪,
‫将是负有责任的演员｡
‫所以这就是简单地说所受的伤害｡
‫除了这个damage事件结构体之外, 大部分内容对你来说都很简单｡
‫这就有点复杂了
‫让我们来看看这个损坏事件的结构, 看看我们能做些什么？
‫它将如何作曲？
‫我们要怎么把这些联系起来？
‫现在, 这还不是很明显, 但实际上有两个亚型的这种损害事件｡
‫实际上,
‫您不会真正创建EF损坏事件, 而是创建EF点损坏事件, 或者创建EF径向损坏事件｡
‫这是虚幻中存在的两种主要类型的伤害｡
‫你可以创建更多不同类型的伤害为您自己的自定义的东西,
‫像你可能有一个火灾损害和不同的参数, 但在这种情况下, 我们感兴趣的EF径向和点损害｡
‫所以辐射状就像是手榴弹爆炸, 在这种情况下你会说, 好的, 半径在哪里,
‫下降了多少？
‫所有这些东西都是点伤害, 因为它听起来更适合像枪这样的东西｡
‫我们要创建一个EF点损坏事件, 然后我们要去寻找构造函数, 这是它的构造函数,
‫我们可以看到它接收了什么｡
‫它又开始承受伤害了｡
‫这是一个重复｡
‫我们有命中结果, 导致这一点损害发生｡
‫然后我们在拍摄方向｡
‫好极了｡
‫我们已经计算过了｡
‫我在上节课做这个的时候已经想好了, 然后是损伤类型的子类｡
‫这可以用来传递更多的信息, 这样, 实际上, 你可能会创建一个不同的损坏类型,
‫而不是创建一个不同的损坏事件类型｡
‫在这种情况下, 你可能会有一个火灾类型或类似的东西, 因为我们不需要任何类型的破坏类型｡
‫我们不做火焰伤害或任何额外的像毒药伤害｡
‫然后我们要做的就是在这里传递一个空指针.
‫让我们一起构造一个这样的事件, 然后我们称之为take damage事件｡
‫首先要做的是粘贴类型, 我们称之为damage事件, 然后我们要构造它.
‫首先, 损坏的数量, 我们还没有一把枪的损坏数量｡
‫我们不知道它造成了多大的伤害｡
‫因此, 我们可以继续在那里创建一些信息｡
‫我们已经有最大射程了｡
‫我们想在这里多买些房子｡
‫这将是一个编辑任何地方, 这将允许我们说浮动损坏｡
‫我们能造成多大的伤害？
‫我将造成10点的伤害然后我们可以在C++中使用这个｡
‫所以损伤是我们要传递的第一个参数｡
‫第二个是那个命中结果？
‫幸运的是, 我们已经得到了命中结果
‫接下来是发射方向, 我们已经计算了发射器的发射方向｡
‫然后我们来看看子类, 它是一个空指针.
‫好了, 就这样了｡
‫接下来的事情就是找到我们要伤害的演员｡
‫从你的攻击来看, 这是相当简单的｡
‫点击点, 让演员在这里｡
‫但是你需要检查它是否为空, 因为我们不想以一个空参与者结束, 我们试图破坏它,
‫否则我们会崩溃｡
‫所以你的挑战是调用take damage函数检查actor是否为空.
‫首先, 我们不需要一个空的参与者, 并调用take damage, 看看你是否能让它编译｡
‫暂停视频, 开始体验｡
‫好吧, 我会的
‫欢迎回来｡
‫我们的客串演员来了｡
‫我把它叫做我给予它一个变量.
‫所以一个参与者指针就是命中参与者, 然后我们在这里做一个if语句,
‫基本上就是说如果命中参与者不等于一个空指针, 那么我们就用这个命中参与者调用take
‫damage函数.
‫我们要做的是, 第一个参数是损失量｡
‫第二个是什么？
‫我将导航回“获取损坏”并进行查看｡
‫下一个是我们把这个损坏事件放在一起的结构体｡
‫让我们把这个放在第二｡
‫然后我们来看看创建这个的控制器｡
‫那是我们的控制器
‫枪的控制器才是造成伤害的人｡
‫然后这是煽动者在我们取伤害的最后一个参数｡
‫如果actor不等于空指针, 我们可能只想在this中构造这个结构体, 因为如果我们没有一个actor来应用这个损坏,
‫就不需要它了｡
‫让我们来编译一下, 看看这是否可行｡
‫所以我的日志出错了｡
‫让我们看看发生了什么｡
‫我只是少了一个分号｡
‫这很简单
‫一个要在拿到演员那里后才能修好｡
‫我们再去试试｡
‫好的, 谢谢
‫一切都编译成功, 我们可以继续玩,
‫只是检查射击不会给予我们任何零错误或尝试和崩溃的引擎｡
‫看起来没问题｡
‫所以我们将进入下一节课, 我们将试着接收这个演员的伤害, 我们已经把它放在了这个层次上｡
‫所以你在那里｡