UE4模型拆装蓝图实例

上传人:ali****an 文档编号:111071249 上传时间:2019-11-01 格式:DOCX 页数:15 大小:2.52MB
返回 下载 相关 举报
UE4模型拆装蓝图实例_第1页
第1页 / 共15页
UE4模型拆装蓝图实例_第2页
第2页 / 共15页
UE4模型拆装蓝图实例_第3页
第3页 / 共15页
UE4模型拆装蓝图实例_第4页
第4页 / 共15页
UE4模型拆装蓝图实例_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《UE4模型拆装蓝图实例》由会员分享,可在线阅读,更多相关《UE4模型拆装蓝图实例(15页珍藏版)》请在金锄头文库上搜索。

1、UE4模型拆装蓝图实例最终效果如下图所示步骤1:导入FBX 并且所有模型的原点在同一个位置 (原点)最好将所有原点归到所有模型的下方中心 方便散开时候往上散 不至于散到地面一下步骤2:创建新项目 和不同的文件夹(选择不具有初学者内容 )然后在WorldSeting中添加新的游戏模式和新的PawnClass(添加后系统会自动创建BlueSprint的文件夹)3:将导入的FBX分别创建为蓝图类如下图所示在此之前先创建一个蓝图BP_Expose作为蓝图父类,然后在BlueSprint文件夹中打开所有FBX创建的蓝图类,在ClassSetting中设置它们为BP_Expose蓝图类的子类(就是继承关系

2、)*将所有蓝图拖拽到场景中*进入蓝图部分在蓝图父类BP_Expose中首先通过Get component by class获取场景中的蓝图类(选择对象为StaticmeshComponent)返回了一个数组(场景中八个蓝图类),首先判断这个数组是否长度为大于0(否则一切没有意义),然后通过Get函数获取这个数组的第一个元素将其设置为名称为StaticMesh的一个变量,类型为StaticmeshComponent这个步骤的意义在于保存场景中蓝图类StaticMesh的引用*在这个步骤蓝图中,主要是通过getComponentBounds获取模型的中心(重心),不是原点,通过Get direct

3、ion Vector这个函数算出原点到中心这个方向,以及距离 并且将这数值保存到两个以后要用的变量 (散开的距离),random rotator是一个随机旋转角度并且赋值个一个旋转变量*这个图表中显示通过在蓝图父类的所有子对象上悬停发生两个事件 一个是悬停时候设置材质高亮 一个是离开时候设置材质为普通材质,也可以在初始时候就将所有的蓝图类赋予初始材质 显示高亮后又可以变成另外一种普通材质*接下来要进行的是组装和拆分两个动作的自定义事件 可以通过Timeline这个事件节点来设置模型拆分出去的动作和旋转的速度 1模型拆分由于清晰度 我截图分成两半首先自定CustomEvent 将其命名为huan

4、dong(这个名字最后觉得没有命名好),然后在这个自定义事件中增加一个整形变量目的是为了以后由这个变量的值来决定是否是依次来拆分还是同时拆分 如果这个变量是一就延迟0.2秒来一次拆分每个模型 如果是0不进行延迟,timeline这里就不多说了,游戏开始时候从原点开始,然后通过Ease这个函数来进行线性缓动,缓动原点是0.0.0,目标就是P To END这个事先保存好的值,也可以修改,然后再设置拆分的目的地以及旋转(旋转中也可以通过Ease这个函数来事先一个线性的角度旋转 不是匀速旋转)。这里有一点重要的是没有讲到的 一个状态的存储,我们现在Bluesprint文件夹中右键创建一个Enumera

5、tors(枚举变量),在其中创建两个变量 分别为Start和end两种状态,为了在模型移动后把这种状态给保持下来在执行拆分模型完成后 将模型位置的状态设置为结束,将其保存下来 方便以后调用这个状态,模型的组装:其实就是把两个起始位置和目标位置反置一下就可以了*在游戏开始时候要做的事情 通过sequence这个序列节点来同时做有些事情 如下图所示 到此在蓝图类BP_Expose这个父类上的蓝图节点连接就结束了 接下来 我们到MyPawn这个类中进行蓝图调试与编辑二 在MyPawn这个类中编辑蓝图*首先在Mypawn中添加Spring和camera ,将相机作为spring的子类相机就变为这条sp

6、ring红线的端点位置了,可以设置这个红线的距离 白色圆球就是这个相机的聚焦位置,为了不让这个红线坚持到模型的碰撞 以免发生错误 把Spring这个父类下面的这个DO collision Test勾选框勾掉再把这个打勾,意思是可以让游戏模式旋转,过后将Mypawn拖到场景中 在WorldSetting中设置游戏模式为自己增加的游戏模式,和我的Mypawn,这样游戏开始 相机才是你调整的那个位置 不然就是默认的位置 接下来 我们来控制视角的变换,在ProjectingSetting的在中的AXIS添加两个控制器MouseX和MouseY分别命名为Yaw和Pitch,并将MouseY的Scale值

7、改为-1. 进入图表,通过Input Axis+Yaw(自己刚才命的名字,调用鼠标控制),然后通过Add controller Yaw Input和Add controller Pitch两个函数来执行鼠标的左右上下控制弄能。*鼠标以及视角调好了我们来做真正意义的模型拆分动作的调用功能首先我们新建一个变量叫做Is by step(是否一步一步的拆分),这就是在自定义缓动事件时候说的我新建的整形变量 在这里发挥作用了,这本变量设置成Bool,大家知道这个变量转换成整形不是0就是1, 下面是这个环节的总蓝图节点连接表通过两个键盘上的U和I键设置Isbystep这个变量的置 从左边开始,通过GetA

8、ll Actors of Class 这个节点来遍历查找每一个子蓝图类,然后将其调用到Ease huandong这个自定义事件上去执行 ,这个下面的意思就是如果我设置成1,等于下面的就没有变化 在BP_Expose这个蓝图中的这个节点就要在每个模型拆分后延迟0.2秒拆分下一个模型,如果我设置成0,那么Index就是0,0*0.2就是延迟0秒 等于不延迟,接下来就是组装模型了 其实很简单 把最后面的调用自定义事件改为huandong2就可以了*增加一个功能 :当我们选中一个对象,立刻聚焦到该模型上,其他模型随机隐藏先展示一下最后蓝图表首先我们得创建一个蓝图变量,即即时被选中的对象,类型为蓝图类B

9、P_Expose(我们在项目进行开始自己创建的蓝图父类)在这个功能之前 也是要首先进行蓝图类的查找与遍历,在LoopBody这个节点,通过ArrayElement 引出这个节点,目的是为了在MyPawn中引用,然后通过Set Vibisillty将所有蓝图隐藏,等隐藏所有完了,再单独通过创建的CurrentSelect蓝图变量来设置当前选择的对象被显示出来,也是需要通过SetDefaultSceneRoot来引用,然后判断是否存在,再通过SetActorLocation设置他的目的地,通过此时的摄像机位置到该对象的Bounds中心点,这就是为什么引用MyPawn的DefaultSceneRoo

10、t了 不然就没有起始位置 *接下来 我们做摄像机返回原点的功能 通过B键来是实现,而且显示所有有可能被显示的物体为初始状态首先还是要用到遍历循环,然后显示所有的模型,然后再次引用SetDefaultSceneRoot,这样才能找到摄像机的位置,然后通过Set。Location和Ratator把所有模型放回原点以及显示*到了最后一部实现点击按钮来一次批量组装和拆分模型首先需要制作UI为每个按钮添加点击事件,将点击事件设置成一个封装的函数 方便管理界面,这个函数的功能为调用后面我们要创建的Step自定义事件,含有一个Inter整形变量的参数,这个自定义事件在Mypawn中创建 ,再回到我们创建的M

11、yWidget中,创建一个自定义函数调用鼠标和这个Step事件,上图中,首先我们在UI的蓝图中,获取到Get player Pawn这个类 ,然后才能用它里面的一些变量和自定义事件等,再将其转换为我们创建的那个MyPawn,就可以执行自定义事件Step了,把这个函数封装了,就可以通过鼠标来实现点击按钮事件了上图的Index就是我们在蓝图类BP_Expose创建的变量,作为每个按钮要选择的那几个模型的代号,现在我们来把这个Step在MyPawn中写好这个自定义事件 是如何实现部分拆装的 最后的图表是下图所示左边开始,通过遍历循环查找对象在Step下面的Index,和遍历出来的对象做对比,是否是小于我在每个模型下面设置的代号,如果小于再执行拆分的(意思就是没找到,就把当前已经遍历的元素重置(通过huandong事件,并不是瞬间变化),原点 等于没动 ,因为我们最初的位置也是原点,),如果是等于模型下面的那个编号 就要执行拆分选择的模型*88总结 该案例可以实现虚拟产品展示 比如汽车等等物件的展示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号