如何实现从一堆实例中选中变量值特定的一个
-
效果是这样,ABC中任意一个的实例变量变动后,选中X的变量值为0的实例,然后移动到那个实例发生变化的位置,也就是假设A的实例变量变化,从一堆X中选中一个变量值为0的X移动到A边上,我使用系统的按条件选择+随机选择,如果ABC变量变化的比较快会造成X来不及移动,也就是ABC的变量值变动了但是X没有移动过去或者会延迟一下过去,大佬们该怎么弄呢
-
@Yamls 因为我有点没看懂,所以我猜测一下你的问题。
目前的问题是,ABC变量发生变化后,X开始移动;但上一个X还没有移动到位时就发生了下次变量改变,于是X的运动发生异常。如果是这样的话,就需要把每个X的运动独立出来,相当于做一个异步进行的操作。
修复方法的话,选择X的时候加上一条,当X的速度为0(没有在移动)时,这个条件要放在随机选中之前。此外,每次让X运动时,采用独立的方法进行(例如移动到位置、移动固定距离等);如果一定需要一直保持选中,可以开启一个定时器,然后定时器运行中时执行移动事件。
不过我可能误解了情况,因为没有事件表不是很确定
-
@zjxdiu
谢谢,事件表不过数据要改下,x1被击中后,变量是否被击中会变成真,然后当变量变成真,通过系统里选中文本,变量是否可用为真的实例,再从中随机选一个,移动到x1的位置,直接通过设置位置移动过去,但是这样会造成延迟移动,也就是x1变量是否被击中为真,文本要过一会才移动过去或者不移动过去
-
@Yamls 这个事件写法可能会导致问题,因为仅触发一次被放在了子事件中(不过具体不记得了);此外,这个变量变化之后0.2秒再改回来的写法也容易导致后续产生更多bug。
如果现在这个写法会导致问题,我建议可以使用动作组来代替这个过程,也就是碰撞时使用动作组,然后在动作组里完成选中和设置位置的动作。
不过这里说会延迟执行,这我就不是很确定原因了,理论上来说这样的写法不会导致延迟,可能有其他地方的事件影响。
最后,“比较实例变量”这个条件一般是先选中再使用,不然还是可能发生一些隐性的问题