新手求助:如何用Blueprint Interface替换On Component Begin Overlap Event?
先确认接口是否正确实现:打开EnemyNPC的蓝图,进入「Class Settings」找到「Interfaces」,把你创建的接口添加进去,然后检查「OnCollision」函数里的伤害计时器逻辑——是不是真的写对了启动计时器的步骤,别漏了勾选循环、设置1秒间隔这些关键项。
检查重叠事件里的接口调用逻辑:在盒体的On Component Begin Overlap事件里,得先把重叠到的「Other Actor」转换成Player Character,成功后再调用接口的「OnCollision」函数,并且把转换后的Player作为参数传进去。另外要注意调用对象是EnemyNPC自身(因为它是接口的实现者),别搞成让Player去调用接口。
验证碰撞基础设置:别漏了最容易踩的坑——盒体组件的「Collision Preset」要和Player Character的碰撞通道兼容,确保能触发Begin Overlap事件。比如盒体设成「OverlapAllDynamic」,或者自定义预设里开启和Player的重叠检测,要是重叠事件本身都没触发,接口调用肯定没反应。
核对接口函数参数类型:接口里的「OnCollision」输入参数必须是Player Character类,不能是Character父类或者其他类型。参数类型不匹配的话,调用会静默失败,连编译提示都没有。
排查计时器本身的问题:就算接口调用成功,也要确认「OnCollision」里的计时器是不是真的启动了。比如检查计时器的绑定函数有没有写扣血逻辑,是不是不小心把计时器设成了一次性而不是循环,或者Duration设错了数值。
内容的提问来源于stack exchange,提问作者ari_

