UE4实现生化危机7影子谜题

本篇我们用ue4来实现一下生化危机7的影子谜题。实现的效果如下:
在这里插入图片描述

在这里插入图片描述

素材资源地址 密码: 3rkb

1.准备安置素材

在这里插入图片描述
将素材导入ue4中,随后建立一个Actor,将staticmesh类型的Eagle模型给Actor。这里命名Actor为BP_Eagle。
这里我们使用第三人称模板用作演示,进入官方的第三人称地图,随后将测试场景布置好(聚光灯,BP_Eagle,Eagle_Puzzle_Image)
在这里插入图片描述
在这里插入图片描述
这些基本的场景做好之后(上图可以看见Eagle旁边有个Camera,这个Camera会在后面讲解如何设置这里先略过),我们便可以开始做人物与Eagle模型的交互功能了。这里我们直接在第三人称人物蓝图中进行修改,打开ThirdPersonCharacter。
在这里插入图片描述

2.人物交互逻辑实现

2.1 人物交互Eagle

打开蓝图后,我们在空白区域,利用Left Moush Button节点(点击鼠标左键),发出射线检测,碰到的物体如果为BP_Eagle的话,就将该物体存入一个该类型的变量Eagle中(方便我们后面旋转Eagle),随后将人物的运行状态设置为None,并设置一个Bool类型的变量(这里我的变量名为Begin,即在这个变量为True后我们的人物就不能运动了,旋转鼠标只能旋转Eagle的方向不能控制我们的人物,再次点击鼠标,我们便返回之前的状态)。整个蓝图逻辑比较简单,这里利用第三人称的camera作为射线检测的初始不是很合理,但是因为是着重于实现所以细节就不用去深究拉=。=
下面是该部分蓝图的实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
整体蓝图:
在这里插入图片描述

上面的蓝图实现后,我们的人物便于Eagle有了简单的交互,即检测到Eagle后不能移动,Begin的值设置为True,再次点击左键,我们便回到了人物。接下来我们接着做发生交互后,旋转鼠标即旋转Eagle的方向的逻辑。

2.2 旋转Eagle

首先我们添加两个函数,用于Begin为True时,旋转Eagle的逻辑。(EagleYaw EagleRoll 即旋转Eagle的Yaw轴与Roll轴)
在这里插入图片描述
EagleYaw函数:
在这里插入图片描述
传入函数的值便为鼠标旋转的数值(下边会解释值得来源),随后获取该值得Yaw值,与之前存好得Eagle变量的rotation值(GetActorRotation)利用Combinerotators节点,将两个值进行混合,便可以实现Eagle从一个rotation旋转到另一个rotation。最后将return的值(return Value)传给Eagle新的rotation(利用SetActorRotation)便实现了Yaw轴的转换。(Roll轴的转换异曲同工,便不做赘述。直接附上蓝图)
EagleRoll:
在这里插入图片描述
随后我们回到事件蓝图节点。利用人物蓝图中的Mouse Input(之前官方给我们写好的)。
在这里插入图片描述
即当Begin为True时,鼠标输入的值便会传入Eagle Yaw,Eagle Roll两个函数中。到这一步我们便已经设置好了Eagle的旋转,接下来我们开始设置,摄像头的转换。

2.3 人物摄像头的转换。

在场景中新添加一个camera,并设置好camera的位置(方便观察Eagle的旋转以及与老鹰图片对齐的关系)
在这里插入图片描述
在这里插入图片描述
设置好了之后我们便进入关卡蓝图
在关卡蓝图中创建一个新函数changecamera。
在切换camera之前我们需要知道ThirdPersonCharacter蓝图中的Begin是否为True,于是我们获取PlayerCharacter(利用GetPlayerCharacter),随后强制转换成ThirdPersonCharacter类型,这样我们便能获取它的Begin变量了。随便判断Begin的真假性,利用SetView Target with Blend节点实现摄影机的切换。
在这里插入图片描述
设置好该函数后,我们在关卡蓝图事件蓝图中,利用定时器节点Set Timer By Function Name。定时的调用该函数。我这里设置的时间间隔为0.5,这里注意将函数的名字填入Function Name中(我的函数名为ChangeCamera),以及勾上Looping(循环)。
在这里插入图片描述
到这一步我们便实现了摄影机的切换,下一步我们将实现核心功能,判断影子是否对齐功能。

2.4 判断影子是否对齐

首先我们回到人物蓝图,利用Event tick,每帧打印一下Eagle模型的旋转信息。
在这里插入图片描述
在这里插入图片描述
从上图可以看出当影子与图片重叠时的,pitch为1.302128,yaw为-3.7,roll为92(每个人的旋转信息可能不一样,根据自己的值进行设定!)左右当然不用非常的精确,在实际测试中,我们也是设置一个趋近于的值设立一个范围。这里我们记下值的信息。随后在人物蓝图中创建一个新函数CheckEagle。
在这里插入图片描述
这里首先判断一下Begin的值,随后获取Eagle的rotation值,再利用InRange节点,判断3个轴的值是否在重叠的范围内(可以设立一个范围,最大最小最好不要超过10度),当三个值都为True时,我们便解开了谜题,设置一下Begin为False,end值为True,这里我们不要忘将人物的运动状态设置回来。随后的功能读者便可以自行实现。
在这里插入图片描述
在这里插入图片描述

博主在陆续过程中会出一些,用ue4实现游戏中一些常见小功能的实现教程。大家可以关注一下方便对教程的更近。
另外如果本次教程中,有哪些没讲清楚的地方欢迎大家留言私信,博主看到都会一一解答。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值