Runtime修改KCC速度异常:SetKinematicSpeed函数失效求助
Runtime修改KCC运动控制器速度无效:SetKinematicSpeed调用后速度被重置为默认值
问题详情
尝试在运行时调用SetKinematicSpeed(FP._0)修改KCC(运动控制器)的移动速度,但完全没有效果——即使将速度设为0,物体仍保持恒定运动。进一步观察发现,每帧调用该函数前,速度值都会被自动重置为资源默认值8,即便调用后临时显示为0。此外,KCC插件官方手册中未提及运行时修改速度的相关说明。
代码示例
当前使用的设置速度代码:
FPVector2 moveVec = tgt - tf->Position.XZ; kcc->SetKinematicSpeed(FP._0); kcc->SetInputDirection(moveVec.XOY);
尝试过的方案
曾考虑直接修改KCC设置资源,但感觉并非最优解:
frame.FindAsset(filter.KCharController->Settings).Processors... -> EnvironmentProcessor -> KinematicSpeed = s;
解决方案
问题根源在于SetKinematicSpeed仅临时设置输入速度,而KCC每帧会从资源配置中读取默认速度值覆盖该设置。正确的做法是直接修改当前KCC实例的EnvironmentProcessor参数,操作实例的运行时数据而非全局资源:
// 获取当前KCC实例的EnvironmentProcessor var envProcessor = kcc->GetProcessor<EnvironmentProcessor>(); if (envProcessor != nullptr) { // 设置目标速度,这里设为0 envProcessor->KinematicSpeed = FP._0; }
说明
- 这种方式直接修改的是当前KCC实例的处理器运行时参数,不会被资源默认值覆盖
- 无需修改全局资源配置,避免影响其他使用相同KCC设置的对象
内容的提问来源于stack exchange,提问作者Brayden Rudisill
相关产品推荐
相关产品推荐

