麦克雷 Mavom.cn
标题:
LimboAi行为树中使用await存在问题
[打印本页]
作者:
艾的民
时间:
昨天 12:38
标题:
LimboAi行为树中使用await存在问题
如图一,是我一开始使用的行为树结构
图二是一开始的前摇任务脚本
过程中一直与预期不符
可以执行到前摇位置,但是始终到不了后面的任务,是进都不会进
检查之后发现await好像会影响行为树正常使用
改变结构如图三,脚本改成图四之后都能满足预期执行
但是我还是想用await一劳永逸的方法,有没有大佬知道怎么办
(, 下载次数: 0)
上传
点击文件名下载附件
(, 下载次数: 0)
上传
点击文件名下载附件
(, 下载次数: 0)
上传
点击文件名下载附件
(, 下载次数: 0)
上传
点击文件名下载附件
作者:
艾的民
时间:
昨天 12:39
为什么没人
(, 下载次数: 0)
上传
点击文件名下载附件
是不是解释的不清楚
直接一点就是,用await会导致行为树中断,想问问怎么能在LimboAi的行为树里正常用await
作者:
ostsv
时间:
昨天 12:39
行为树节点它是要每帧都返回一个结果的,在await之前,你打算让他返回什么呢
作者:
ostsv
时间:
昨天 12:40
我比较菜,不知道godot有什么别的异步方法,所以建议不要使用await。
如果你想要等待某个信号,可以在黑板给他设置状态值,或者去找找有什么更优雅的解决方法。
作者:
艾的民
时间:
昨天 12:40
各位,我找到非常合适的解法了
如图
解释:await关键字并不是单纯将函数停在某个位置,而是将当前函数挂起,ai说会临时返回一个null,不过无法查证,因为不能随时读取一个协程函数(即直接或间接使用await)的返回值,但可以随时执行
因此,创建一个变量保存当前动作播放状态,初始为false,创建一个等待动画完成的协程函数,并在完成后将之前定义的变量改为true,那么只要在进入的时候执行一次协程函数,在_tick()中每次轮询中检测变量就行
(, 下载次数: 0)
上传
点击文件名下载附件
(, 下载次数: 0)
上传
点击文件名下载附件
作者:
艾的民
时间:
昨天 12:41
行为树原理本质是每一帧检查状态,不能用await
欢迎光临 麦克雷 Mavom.cn (http://mavom.cn/)
Powered by Discuz! X3.5