1、拾取钥匙开门
在door的蓝图类新增一个布尔变量“是否可以开门”,添加“分支”(通过变量产出true或false)
另建立一个蓝图类:钥匙
对于拾起的物体,可以添加球型碰撞,sphere collision(就不用盒体触发器了)
使用“get all actors of class”,并指向door_bp的蓝图类,则能输出door_bp蓝图类的所有实体的数组,这时再”get“数字0,即指向数组第一位,即第一个门,然后将该门的“是否可以开门”设置为true.
最后用到“destroyActor”销毁钥匙
↑我设置的是一碰到钥匙就拾起,而不按E
2、蓝图通信
蓝图通信方式有很多
蓝图通信方式①一种是,类型转换为某蓝图类,如一个加速盒子类类型转换为小人类(因为要改变小人的速度)
3、自定义事件
蓝图间产生联系后,要触发自定义事件,首先得创建自定义事件,可左侧新建图表,在里面创建自定义事件
可将所需值传到自定义事件,这样改变值只需要外面用的时候输入改变值即可
使用自定义事件
注:other actor要和object连接,两蓝图才能产生联系
3、引用变量
类型转换后可以将其提升为变量,方便以后使用
4、物体自转
使其旋转坐标增加“AddLocalRotation”,并不断重复这个过程,用到“事件Tick”,每一帧都执行
蓝图通信方式②另一种蓝图通信方式,是
生成一个变量,将变量类型设置为需通信的蓝图且为引用变量,这样从该变量拉出来的线可以执行该变量的蓝图类的自定义事件,但一定注意的是,需先将该变量设为公有(右边眼睛),再然后在世界中点击小人,将其这个变量赋值,赋值对象即你要旋转的对象.
这种方式只能使小人对某一实体操作,若对象特别多,则需要添加特别多的变量,这是十分麻烦的,下面的另一种蓝图通信方式能解决
通信方式③是
使用如拾取钥匙开门时使用的“get all actors of class”,然后就能选择数组中的一个,或者使用循环遍历“forEachLoop”使全部都旋转