视图:碰撞盒子 触发> (判断) 执行> 事件/动作 译:当什么时候做什么事
当什么时候并且怎样的话做什么事
一下是蓝图定义内容,蓝图类命名不能是中文里面的变量跨类会检索不到。
碰撞盒子需要指定K:类型转换为 设置成小白人防止其他act碰撞触发。
开启键盘输入 需要添加 K:启用输入 并赋值v =K:获取玩家控制器才能有效。ue5中似乎不需要获取输入了。
K:流程 可以 获得开关门 切换开关 分支(if) 等流程
K:时间轴 可以获取线性数据输出 可以输出0到1配合k:插值 映射真实的数据区间变化
获取某个组件(蓝图内的act称呼为组件)相对旋转值(或者缩放,位置)使用k:类:场景组件:获取 。 能拿到取值器,需要绑定要取值的《组件变量》。
注释:场景是指本蓝图文件,你蓝图的根组件就叫默认场景跟组件,所以场景组件就是指本蓝图内的组件。
需要注意的是蓝图根组件决定了本ACT的调性,例如默认场景组件是没有物理属性的,那么子组件就算是设置了物理,整个ACT都是无效的,也就无法响应功能组件功能。功能组件一般是针对根元素起作用,例如发射物移动组件。
k:获取类的所有actor 可以跨场景跟组件查找整个项目中的actor v:依据类命名
K:get (复制) 获取数组中的序列索引值。
设置变量 k:设置+(自己定义的变量名字)
销毁ACTOR使ACT注销掉实现隐藏 K:销毁Actor
注意:获取类的所有actor中选中了ACT的class后面SET才能定位设置XXXX变量,它取值前面搜索到的ACT类里面的变量。并且也会影响到GET出来的值,点击编译的时候GET就会存取了,存错了需要删了重新添加GET更新存取的值,否则后面绑定目标值类型不对。
图表 可以自己新建图表单独写自己的代码不和原有代码写在一起,相当于下一页。
在蓝图中自定义事件相当于添加了一个函数调用作为方法
想要调用组件中的属性进行设置修改可以拖出来并且加入set K:设置 角色移动
如果设置的参数不想固定而是函数带入的,可以把参数绿点直接连到定义的事件上
固定参数
连接参数
连接后直接调用事件出现参数值槽口
新版ue5对中文的支持更加广泛了,下面是一个中文定义的例子,在主控人上定义了一个自定义事件
用另一个触发框类调用主控人的自定义方法
控制圆柱放大 K:获取场景缩放,K:设置Actor相对3D缩放
上图上涨变量值打开了小眼睛,意味着可以外部属性窗口直接设置。
以上是自类调用外类中自定义方法并且传参影响属性值的方法。
下面是直接改变外类变量值方法:
door类中有一个布尔变量初始值是假,限制了按键的有效反应。
在另一个钥匙类中遍历了所有的door类并且取出第一个0下标也是地图中唯一一个door,设置里面的变量为真。
这样实例door门能打开了。
文件想要挪动文件夹位置,直接拖动就行,会自动配置关系。但是往别的项目拷贝需要右键迁移便于打包关系。
1,关于地图模式操作绑定的初步理解
按键批量起名打组,这样组名就是事件名,直接调用批量响应,一般针对多输入设备的按键值。
项目里面具体的配置动作是通过GameMode做整体配置。里面具体包含了一个摄像机配置还有主角模型配置,其次会话类,状态类等其他类需要点加号自己新建扩展都是用于完善游戏控制的很多是原始定义的不能改动所以自己新建。
红线圈出来的是我自己复制新建了两个重要的控制类并且替换原始绑定上。NewPlayerController2是用户控制器里面有控制鼠标显示的属性用于特殊时期控制显示鼠标。
ThirdPersonCharacter是用户角色模型类里面设置了运动的快慢速度跳高等属性。但是他是继承的这些属性本身没有定义。在ThirdPersonCharacter类中继承了一个类
他包含了具体的运动属性定义,此类主要是配置了人物模型。
地图的游戏模式设置
是有优先级的越具体到细节上越优先级高,最开始也是最低的是从项目开始整体设置
这里主要是设置本项目用哪个游戏模式,里面用哪个主角模型,下面还有初始地图是哪一张(没截取)。
进入关卡地图后还可以再设置一遍此时优先级高于之前的设定
我这里替换了一个虚幻库中下载的角色,游戏模式用原来的配置了新角色控制没使用自带的游戏模式(其实都一样,你也可以自己建一个游戏模式配置)
以上运行就可以在地图关卡中调用新的角色并且控制他了。但是你如果选择了直接把角色拖进游戏中并且设置了他为主要控制角色0玩家
那么他的优先级又高于之前的,这就很具体指定了,他是最先控制的角色,前面设置无效。
ue的碰撞
设置碰撞需要考虑开启物理引擎和模型可移动。开启物理之后碰撞出现真实的抖动。没有开启的是死板的动。(另外模型本身要添加了碰撞网格,不然会穿透,碰撞无效)
想触发撞击事件,需要打开命中属性设置。想触发重叠需要打开重叠模型双方各自的重叠属性(都开)。
另外可以设置自己得类型和对应响应得类型,正反对应关系。
下面得例子大方块设置了车载类型可以重叠,小方块设置了类型“车载”,所以小方块能融进去
再次强调想进行重叠事件响应必须双方都打开生成重叠事件得属性,所以两个方块都要点开。
有时候逻辑没问题但是效果出不来,可以尝试关闭重启软件
在类中添加函数方法:
在旋转方块类中添加了一个函数方法【重叠玩家】,此函数的属性中增加了一个参数【开始重叠】是布尔类型的,此内部函数主要用于设置修改属性变量【旋转布尔控制】的布尔值。此函数将在外部以通信的方式调用。
Actor通信
1,类型转换方式
我们在一个主角模型中添加了碰撞胶囊体,然后设置了重叠事件,通过感应外模型 Other Actor调用类型转换为 方法切换为【旋转方块响应式】类实例然后 调用此实例的内部函数 【重叠玩家】将参数传入为真(自带打勾)通信交互完成。
注意这里是类型转化为类实例
如果类型转化为类则修改的模板类
因为是修改的实例所以每个实例都有单独的效果。
此刻【旋转方块响应式】类内部的属性变量值修改引起了流程控制的改变条件变化,最终开始旋转。
总结:变量就像开关,他的值变化可以影响对应类里的逻辑代码的业务流程。想要外部控制这个开关就要借助内部函数方法定义来修改内部变量值。内部方法可以通过外部的类型转换调用函数方法。
另说,类模板的子类化:类文件可以当作模板直接拖放生成实体。类多样化上可以右键点击第一选项创建子蓝图类,而不是通过复制是通过继承的方式做变化处理,可以修改里面的模型实体。我们点开子蓝图发现没有任何代码,看来代码都依靠在父类中定义了。
2,直接Actor通信
直接通信需要在主操作的蓝图类里定义一个变量设置相应的目标类型(你想通信的对方模型),并且把可编辑实例打开用于外部索引对接,内部将变量类型转化为具体对应模型类中的具体类获取使用就能对接了。(看来总类可以转为内部使用的组件分类)
外部设置具体的模型类连接上要通信的灯(因为此类型内部不能设置默认值)
总结:可以直接使用【类型转换为 XXX】来读取另一个类中的变量,或者使用其中的方法函数来操作内部的变量来操控想要的业务。
或者遍历使用[获取类的所有Actor]类指定为XXX来遍历出想要的类再操作里面的变量或者函数方法。或者直接定义一个相关变量外部引入