如何对同类组中的某一个实例精准操作



  • undefined
    红框处我该怎样才能对其进行一系列操作,比如获取位置,移动位置等等。对道具组这样操作完全没有效果,不可能对每个物品都做判断操作逻辑吧?现在才有20多个道具,道具多了岂不疯了?
    undefined
    测试时是通过名称创建实例



  • 一般就是要做实例筛选的,也就是你想单独操作该实例时,首先要明确你要操作的这个实例有什么特征是它独有的,例如当它被点击时,当它处于某个图层组时等等,都有相应的条件去标识,哪怕没有相应条件,也可以通过其各种表达式的返回值差异,用系统的按条件选中实例等条件来精确选中。实例的筛选逻辑可以看看这个官方教程(下拉到“筛选操作对象”部分):https://www.evkworld.cn/wiki/320,其中比较特别的一种选中情况就是“刚创建实例时”,有时在刚创建实例的时候我们希望对创建的实例进行差异化处理,例如【刚创建子弹实例时,让它的移动方向/角度跟角色的朝向一致】、【刚创建血条时将它绑定在生成它的实例上】,而系统的“创建实例”动作和精灵的“生成其他对象”动作默认是执行后,在该动作的后续动作以及子事件是选中了该刚创建的实例的,但“按名称创建实例”动作除外,该动作不会默认选中实例,如果使用该动作创建实例希望马上选中它进行操作的话,那可以在该动作执行后的子事件条件,用“选中最新创建的实例”来选中它。

    结合官方教程,一些实例筛选的总结如下:
    1、条件筛选了哪些实例,动作中要操作该实例所属对象的时候,就用该对象的动作来操作(对象名要对得上,例如条件筛选了对象A的实例,那动作用对象A的动作就可以只针对条件筛选出的实例进行操作,同类组的话就要条件是筛选同类组,动作是同类组的相关动作,同类组和它所包含的对象的实例筛选是完全互相独立的)
    2、没有用条件限制时,动作中操作某个对象的实例时,是默认全选该对象的所有实例进行操作的。
    3、实例基本只能由条件来筛选,每个对象自带的条件基本都具有选中该对象实例的效果,有小部分可以额外选中其他对象的实例(如碰撞时和偏移重叠时),抽象对象中只有少部分条件明确是对着实例操作的,才具有筛选实例的效果(如系统的选中实例那一类、触屏操作的“触摸对象时”、鼠标操作的“点击对象时”等等),其他条件基本都没有筛选实例的效果。
    4、唯二自带选中实例效果的动作是系统的“创建实例”和精灵的“生成其他对象”,后续动作及子事件会默认选中该动作刚创建的实例。
    5、实例的筛选在同一个事件的子事件中有继承效果,例如父事件的条件筛选了5个对象A的实例,那子事件的条件对对象A筛选实例时,就是对这5个实例做进一步的筛选。

    以上5点总结应该涵盖了大部分情况,那么回到你的问题上,如果要对同类组的某个实例精准操作,那就利用条件精准选中该实例即可,你截图中的两个事件如果是独立运行的话,最终效果应该是这个道具组会每帧(约1/60秒)进行一次“向270度移动100像素”,几乎肉眼不可见就飞出屏幕外了,具体你可以预览的时候,在下方调试窗口的左边选中该道具组,看它的属性变化。如果你觉得需要对每个物品做独立的操作很麻烦,说明你在设计上没做好对它们的类别归纳,同类组主要是为了方便对具有类似行为的各种对象进行统一操作而存在的,例如不同的掉落物对象都有“主角与其碰撞后对它进行拾取”的功能,那一个个对象来写各自的碰撞条件是很麻烦的,这时只需要把它们归到一个同类组中,主角碰撞同类组的条件就能适用到所有该同类组所包含的对象上。



  • 感谢,问题已解决,但是今天发现虚拟摇杆绑定有问题。
    undefined

    具体到某个角色绑定摇杆是正常的,表明摇杆参数设置没问题
    undefined

    所以目前只能这样解决
    undefined



  • 不知道有没有对同类组进行精准绑定摇杆的办法



  • 角色同类组也没添加错
    undefined



  • 摇杆我记得是没法精准筛选实例来绑定的,它会对选择的整个对象都生效,同类组跟对象同理,也就是如果绑定了同类组,那你舞台上所有属于该同类组的实例,都会被摇杆一起控制移动,具体你可以试着在一个空白场景建几个对象测试一下。你说的无效果具体是怎么没有效果,是指控制不了吗?因为我看到你还有个移动到的动作,如果一边移动一边控制,由于两者的互相独立运行,所以也可能是两者叠加的结果让你误以为无效了。



  • 那个移动只是测试,在同类组中其他的精确操作没问题,而绑定摇杆没有效果,不能控制刚刚创建的角色



  • 第二张图,绑定摇杆精确到了某个精灵就可以操作了,第三张图的方式也可以,就是角色多了会麻烦点



  • 测试下来的虚拟摇杆不能绑定同类组,无论精灵是开始前就有实例的,还是开始时才创建的实例都不能绑定
    单独对某个精灵进行绑定是可以的



  • 我这边测试是没问题的:
    undefined
    undefined
    效果:
    undefined
    我不太清楚你那边是怎么测试的,反正我就这么点事件,就是有效果的,结论也跟我记得的差不多,你用移动操作当测试本身是没什么问题的,我只是说,可能会干扰摇杆的效果测试,毕竟摇杆也是移动相关的效果。如果你依旧能确认无效的话,还有一个可能性,那就是你给同类组写了什么解绑摇杆的事件,但是自己忘了,因为解绑也是要选择对象的,如果你选的是同类组,自然不会对对象生效解绑,所以同类组一开始生效了绑定,但紧接着被解绑了,变回了无效,而这个事件由于不是选择对象来操作,所以不会解绑对象,对象就依旧有效。



  • 终于测到问题所在了
    角色同类组添加了八方向能力的情况下,在角色同类组绑摇杆就无效了,所以应该八方向和摇杆同时都绑定是冲突的
    但就算同类组绑定了八方向时又在具体某角色绑定摇杆却又是OK的,可能是因为对于某角色而言是继承了同类组的八方向,并不算绑定,所以可以绑定摇杆
    把同类组的八方向能力去掉后绑定摇杆就是OK的,但失去了兼容性



  • 而且经过测试,绑定了八方向后,禁用八方向再绑摇杆也没用,必须去掉八方向能力,要舍去PC和移动的兼容了?这就很纠结了



  • @大伯kiss 呃……八方向运动是自带一个绑定选择的,不需要用事件去绑定
    undefined
    undefined
    另外没必要舍弃其中一个,可以再加一个新的八方向运动能力,然后通过运行环境来判断启用哪个能力
    undefined
    undefined
    以上这种做法的话,如果你要对某个同类组实例执行绑定摇杆,其实就是把对应实例的八方向能力启用即可,因为八方向能力里已经配置了摇杆绑定,其他同类组实例只需要禁用该能力就行。
    关于制作双端控制的话题,其实之前大家比较常用的是以PC为主,然后移动端用模拟控制和模拟键盘按键(例如摇杆这一块就不用绑定,因为不想用摇杆自身的移动参数,而是写事件通过判断摇杆方向然后用模拟控制动作来控制目标的移动),反过来的情况会少一点,因为PC端有键盘而手机没有,手机端有多点触屏而PC端只能单点(只有一个鼠标),并且测试基本是在PC端,所以之前大多数朋友会以模拟控制或模拟键盘按键这个做法为主,不过加上你这里主要讨论的摇杆绑定,两种方法其实各有优劣,主要是之前的摇杆绑定没有现在这样“八方向能力能直接指定摇杆绑定”的,不少人由于想同步移动参数,就不会用摇杆绑定,但是现在“八方向能力能直接指定摇杆绑定”后,就一定程度解决了这个问题 ,不过使用的人还是少数,估计是相关教程较少的缘故,估计也是因为用的人较少,所以什么人发现并反馈同类组的情况下,摇杆的绑定动作会失效的情况(直接绑定对象的话,就会自动沿用八方向的移动参数)。


登录后回复