如何实现角色进入石像范围后每隔1秒回复某值



  • 石像同时只能给先进入作用范围内的1个角色回复,后进入作用范围的角色只有等先进入的那个角色离开后才能享受回复
    用碰撞来做搞了半天没搞出来,求助



  • 范围可以用视线能力来判定,而每隔1秒,如果不需要那么严谨的话,可以用系统的每隔x秒来做(严谨点可以用定时器能力来做计时),也就是当角色在石像视线内时,每隔1秒,增加某值即可。不过你这里还有一个多实例需要判定次序的问题,好在每次只生效一个目标,所以用“占位子”的思路来做即可:给石像一个实例变量,用来标识当前正在回复的目标uid。然后写这么几个事件:
    父事件:每隔1秒,当角色在石像视线内时,
    子事件1:如果石像的实例变量值为0,选中最近的角色实例,把该角色实例的uid设置给石像的这个实例变量
    子事件2:如果石像的实例变量值不为0,
    子事件2的子事件1:选中uid为石像实例变量的角色实例,增加某值。
    子事件2的子事件2:否则,把石像的实例变量设置为0。
    上面这个是比较取巧的做法,比较简单,其实并没有完全按进入顺序来进行回复,一次性进入两个角色时够用的,如果超过两个,那之后的角色会按和石像的距离来判定先后,但肯定是持续只回复一个目标直到他离开。如果想完全按进入顺序来做,就需要记录角色的进入次序,可以设置一个数组来记录角色的进入次序,为了准确记录进入次序,就需要加一个透明对象来当碰撞区域,每次有角色实例碰撞时,就在数组中加入该角色的uid,同时需要遍历所有角色,把没有在治疗区域(透明碰撞区域)的角色实例的uid从数组中刨除,然后把上面那个事件中的"选中最近的角色实例"改成"选中uid为数组中第一个元素值的角色实例",然后后续动作接一个删除数组x第0编号的动作即可。如果不熟悉数组的操作,就不太推荐后面这种做法了,虽然后面这种才能准确判断进入顺序。



  • 感谢!按此思路改造了一下搞出来了


登录后回复