ue4怎么在关卡之间插入过场动画

ue4怎么在关卡之间插入过场动画,第1张

而blueprint只是给策划用的简单脚本,也就是C/C++,这样复杂的功能和算法就可以享受C++的高效率,C++为其暴露接口,虚拟机或脚本语言有的2d java游戏都卡的要死。 ue4的blueprint才是脚本现在移动平台如果跑大型3d肯定是要native code的

首先需要一个模型。

在Edit->项目设置->输入在Action Mappings中添加一个按键事件Fire,设置按键为空格,制作一个子d的蓝图类Bullet,将制作好的子d拖进去放在0,0,0点。在事件图表中找到我们创建的Fire事件,侧函数栏点击加号,创建一个新的函数goFire并拖进事件图表连接Fire与goFire,我们要让按下Space,调用Fire事件的时候,再去调用goFire函数,然后去goFire函数里实现我们的功能。来到goFire函数,首先我们要在按下Space时产生子d,所以我们使用SpawnActor选择从类生成Actor,在Class里选择我们的子d蓝图类我们要设置子d生成的位置,子d应该生成在炮筒的位置,在组件选项里添加组件添加一个空的组件Scene,在视口里调整位置放在炮口。回到goFire里,我们需要把Scen的Location和Rotation赋给生成的子d,所以我们要获取到Scene的Rotation和Location这样,此时当我们回到关卡中运行,按下Space,就会产生一个子d,.此时再运行时,子d就可以掉下来了,最后我们在给子d一个速度因为子d有物理效果,所以我们需要通过Set Physics Linear Velocity的方法给一个线性速度。我们需要给子d一个速度值,然而这个值应该是始终朝着子d的前方的,所以我们不能直接赋值,我们需要先得到子d的旋转,再得到子d向Y轴的坐标,再把这个值赋给速度。Speed是我们定义的一个float变量,用来控制子d飞行的速度。这样,子d的才可完成。

一、项目概述

1.根据项目需求,我做了一个小游戏,小游戏的规则很简单,游戏开始时会有4个四处巡逻的AI,当发现玩家后会追上玩家然后自爆。

     玩家会扣一定的血量,当玩家的血量归零时,游戏就会失败。

2.场景中会放置一些金币,玩家拾取后会加分,当拾取所有金币后则游戏成功。

GameInstance这个类可以跨关卡存在,它不会因为切换关卡或者切换游戏模式而被销毁。

二、项目总结

1.制作该项目的具体步骤如下:

     a.首先需要制作游戏的开始界面,使用UMG进行设计,具体做法为:

          1.使用Border组件进行背景图片的设计

          2.使用Vertical Box组件进行选项框的设计。

          3.在设计好大小的Vertical Box中设计选项按钮。

          4.设计按钮的绑定事件,点击开始按钮则跳转到游戏,点击退出按钮则终止游戏进程。

     b.然后设计会四处巡逻的AI,并且发现玩家后会追向玩家:

          1.首先设计AI的结构,本项目中的AI是继承玩家Character的。

          2.继承好以后删除AI的FollowCamera组件和输入相关的蓝图。

          3.在AI头顶添加一个Widget组件来显示AI名字。

          4.设计AI的自动巡逻和跟随玩家的逻辑,利用蓝图来进行设计:

               a.首先为AI添加一个PawnSensing组件来设计AI的视野。

               b.当AI看到玩家时,获取当前玩家的位置,让AI移动到该位置。

               c.当AI成功追上玩家后,销毁AI并扣除玩家的HP

               d.当AI没有看到玩家时,会先获取一个随机的坐标值,然后让AI移动到该坐标。

     c.设计玩家逻辑:

          1.首先为玩家添加一个Widget组件来显示玩家的血条和分数。

          2.然后为玩家设计两个Int类型变量,分别为HP和Points

          3.设计拾取金币逻辑,即当玩家与金币碰撞后,Points就加1。

          4.设计每帧触发事件,即每帧判断当前HP和Points的值。

          5.若HP的值<=0,则显示游戏失败界面并退出游戏。

          6.若Points的值>3,则显示游戏成功界面并退出游戏。

     d.设计金币蓝图:

          1.金币蓝图的逻辑较为简单,就是当玩家碰撞到金币时就销毁金币Actor

          2.设计金币的样式,添加一个RotatingMovement组件来让金币自动旋转。

2.制作该项目过程中遇到的难点:

     1.设计开始界面时,还没点击开始游戏按钮,游戏进程就已经开始运行了?

          答:这个问题的原因主要是开始界面和游戏进程在一个关卡中,

              解决这个问题的方法有两种,一种就是将界面设计在另一个关卡中,当点击开始游戏按钮后就跳转到游戏进程关卡。

              还有一种方法就是在界面d出后,主动暂停游戏进程,当点击开始游戏按钮后再恢复游戏进程。

     2.在设计玩家头顶的血条信息时,当第一个AI碰撞后,血条直接归0?

          答:这个问题的出现是类型转换的问题,由于血条使用的是ProgressBar组件,它的值是0到1的float类型的值。

              而之前设计的HP的值是0到100的Int类型的值,由于Int类型的值不存在小数运算,所以就会出现这个问题。

              解决这个问题的方法就是将HP转换成Float类型再进行运算。    


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11964791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存