如何实现点击某精灵后,可以点击位置来指定摆放另一个精灵的位置?




  • 如何实现点击某精灵后,可以点击位置来指定摆放另一个精灵的位置?摆放精灵的位置不能超过被点击精灵一定范围。这个场景是设置兵营的集合点?想要点击某个兵营后设置士兵的集合点。如何实现?



  • @yuxiao7 给这个“兵营”加一个视线能力(用来计算距离),然后点击另一个位置设置集合点的时候,判断点击的这个位置点是否在“兵营”视线内,如果是,则生效集合点的设置,如果不是,则不处理



  • 视线这个主意挺好的。小白问题主要是触摸组件不熟练,如何实现触摸兵营后,让集合点开始设置?触摸组件的教程有点少,没学会用。



  • @yuxiao7 例如加一个字符型变量,用来标识选中状态,当玩家单击到“兵营”时(触屏操作里有个多类型点击的条件,里面有“单击对象时”的条件检测),把这个变量的值设置为“兵营”,表示目前选中了“兵营”,然后触摸其他地方时,如果这个变量的值是“兵营”,且在视线内,则设置集合点,并把这个变量设置回""(空字符串),表示回到了什么都没选中的状态,如果选中状态下点击的地方在视线外,也把变量设置回"",表示取消选中,同样回到了什么都没选中的状态。

    上面这个思路说得比较宽泛,实际上可能还要考虑是否有多个兵营,是否有类似兵营以外的其他对象,如果有,其实用同类组来做这个事比较好,也就是:
    把所有类似兵营这种功能定位的对象,都归到一个同类组里,假设这个同类组叫“产兵建筑组”好了,那么事件就写:
    1、点击“产兵建筑组”时,设置“选中状态变量”的值为 产兵建筑组.uid(这一步是为了记录选中了具体哪个建筑)
    2、点击 地图对象 时,按“选中状态变量”的值作为uid选中“产兵建筑组”实例,然后子事件1判断触屏操作.x和触屏操作.y是否在这个实例视线内,是的话就设置集合点等等后续操作,子事件2是否则,也就是不在视线内时,就相当于取消选中,把“选中状态变量”的值设置为0等等。

    当然,上面这个细化一点的思路其实还有进一步的优化空间,例如以所有建筑对象作为整体的同类组,然后通过实例变量区分类别之类的,更进一步归类每种建筑物的功能,不过那就讲得有点远,你可以先按最开始那个思路先试试看。



  • 这个可以,已经实现了。就是老感觉集合点出来的有点迟钝,不干脆


登录后回复