做动画效果,使用蓝图/代码
蓝图实现简单
使得自身进入机关,也触发开门效果
Simulate Physics
MassInKg
蓝图---转换选择的Actor为蓝图类:
转换成蓝图类后,世界大纲视图中的名字也变了,加上了_Blueprint
编辑蓝图类:
①:双击内容浏览器中的蓝图类(SM_Door_Blueprint)
②:在世界大纲视图中的文件后面,点击编辑 SM_Door_Blueprint
蓝图下的窗口:
视口(Viewport) 用于观看模型是怎么样子的
事件图表 (Event Graph)
事件图表(Event Graph)下,可以按住鼠标左键框选,右键对应的图标删除,
改成蓝图类后,上面的属性就会丢失掉:
比如下图中Trigger Volume ,需要拖拽的引用
在C++代码里面定义事件,蓝图也可以监听到
需要开门的时候,去触发事件,蓝图可以监听到事件,然后做一些事情
OpenDoor.h 头文件中
// DECLARE声明,DYNAMIC动态,MULTICAST多个,DELEGATE委托 (C# delegate 委托,Event 事件)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDoorEvent); // 事件加F,需要加“;”号
UPROPERTY(BlueprintAssignable) // 使用这个“注释”,可以使得下面2个在蓝图可以识别到
FDoorEvent OnOpen;
FDoorEvent OnClose;
代码定义好了,蓝图 添加事件才会有对于的OnOpen
添加了,事件就在我的蓝图窗口---图表显示了,OnOpen(OpenDoor)
取消添加,再添加引用,解决没有问题的报错
箭头可以拖出来
Print String 打印字符串
C++代码触发,蓝图监听
蓝图也要编译和保存
蓝图也可以播放
//OpenDoor.h 文件
// DECLARE声明,DYNAMIC动态,MULTICAST多个,DELEGATE委托 (C# delegate 委托,Event 事件)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDoorEvent); // 事件加F,需要加“;”号
public:
UOpenDoor();
UPROPERTY(BlueprintAssignable) // 使用这个“注释”,可以使得下面2个在蓝图可以识别到,蓝图可编辑的意思
FDoorEvent OnOpen;
UPROPERTY(BlueprintAssignable)
FDoorEvent OnClose;
// UOpenDoor.cpp 文件
void UOpenDoor::OpenDoor()
{
// 得到所在的Actor 设置这个Actor的属性
// pitch=y yaw=z roll=x
FRotator NewRotator = FRotator(0, 90, 0);
Owner->SetActorRotation(NewRotator);
OnOpen.Broadcast(); // C++触发这个事件,蓝图监听事件
}