今天写给组件添加碰撞并且绑定了碰撞响应函数代码如下
设置组件碰撞并绑定响应函数
响应函数:
设置完后执行,当组件碰撞后并不会执行响应函数,我还特意检查了要碰撞物体的ObjectType确定是WorldDynamic没有问题。
当我对当前Actor拓展了蓝图后发现,这个组件的Simulation Generates Hit Events没有勾选,当我使用蓝图勾选后 这个蓝图的碰撞函数就被调用了
当我在代码里设置的时候找不到对应的设置,最后发现在代码中用的是设置刚体的碰撞通知,函数是SetNotifyRigidBodyCollision(true);
最后代码:
加上后就妥妥的调用自己写的响应函数了。
随后我发现实际上
Component->SetNotifyRigidBodyCollision(true)
和Component->GetBodyInstance()->bNotifyRigidBodyCollision = true
是同样的功能 但是后者却没有效果。
经过几番验证后发现 这两个如果是写在构造函数中都是有用的,
但是如果不在构造中设置,在BeginPlay中设置的话SetNotifyRigidBodyCollision(true)是有效的,另一个则没有效果 ,个人觉得应该是当游戏开始后并不允许直接对刚体做出对应调整,但是可以用set方法设置刚体。
而我一开始在BeginPlay中使用了Component->GetBodyInstance()->bNotifyRigidBodyCollision = true
应该是无效设置导致的问题
版权声明:本文为weixin_43988432原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。