level 2
场景:有A,B两个角色,现在A克隆出A1,A2,A3......,B克隆出B1,B2,B3......
要求:当A的克隆对象碰到B的克隆对象时,如:A2碰到了B3,此时A2的x,y坐标要设置为B3的x,y坐标+10
如何解决?简化为一句话来说,其实就是一个角色的克隆对象如何获取另外一个角色的克隆对象的属性
2020年04月29日 11点04分
1
level 8
简单来说就是用公共列表储存每一个克隆体 id 所对应的坐标数据,然后在碰到时用这个克隆体的时候通过克隆体 id 调用列表的坐标数据。
然而这个问题中最烦的就是如何知道是哪一个克隆体碰到哪一个。
这个问题则可以用 广播并等待 解决。具体方案如下:
首先把 A 和 B 角色选一个复制。注意这里只复制角色的造型!代码统统不要。甚至不需要颜色,有了形状就可以。然后这个复制好的角色(叫
碰撞箱 吧),加上点了绿旗就 虚像 99 的积木(某种原因,Sc3 的虚像100 和隐藏一样,会废掉 触碰 的侦测积木(?))
我们先假设你复制的角色造型是 A(这个问题是对称的,哪一个都一样)
B 的伪代码
当作为克隆体启动:
将 坐标列表 的 id 项 设为 自己的坐标
重复执行
等待 碰到 A
将 (B_id) 设为 自己的 id
广播 碰撞箱 并等待
// 这里用 (A_x) 和 (A_y) 做剩下的代码
碰撞箱的伪代码
当收到 碰撞箱
去到 列表 B_id 项 坐标
广播 A 并等待
A 的伪代码
当收到 A
如果 碰到 碰撞箱
将 A_x, A_y 设为 自己的坐标 // 这里可能要小心一点,因为有可能有多个同时碰的
这就是所有的代码了。
2020年04月29日 15点04分
2
看得我一脸迷茫
2020年04月30日 07点04分
检测碰撞的话个人认为直接判断距离比较方便
2020年05月01日 10点05分
@Arkos 判断距离比较麻烦,而且你也不知道到底是到哪一个克隆体的距离(用侦测的 到( )距离)。如果你用列表的坐标值来解决,那运算量就大了,还要将舞台分区,麻烦。
2020年05月02日 01点05分
@小C数星星 不不不,判定距离恰恰是最简单的。我说的距离判定不是侦测里到某角色的距离,而是计算的距离。用链表储存每个克隆体的坐标,然后每个克隆体每一帧都遍历一次链表,计算到其他克隆体的距离,如果小于一定值,说明该克隆体和链表对应项的克隆体产生了碰撞
2020年05月02日 01点05分
level 5
巧了我本来也想问这个的来着,但是我解决了(吧....
AB两堆克隆体碰一起,只要有双方碰撞,就直接将自己的信息放在公共列表上,直接加入。这样一来,我管你哪个碰哪个,我只要知道你是第几个碰的就好了(
A每次碰到就将计数的变量增加1,同时把自己的信息放进公共列表。
B每次碰到就读取当前的计数变量,在列表中找到对应项。
由于一些sc碰撞的问题,有可能一个A碰到了B而B检测不出A,所以要将计数变量+1与列表长度+1(放进信息)放一起,否则可能会出现读取到空的情况(我的试过是这样的,如果你们没有就当我没说.....
当然,直接将信息加入列表未免太费空间了
也可以选择看情况开一个适当长度的列表,把之前没用的项用完就丢掉,反复这样,可能会更节省空间
这种代码我试着不会有太大的问题,至少我的50只鸟在我的电脑上飞的好好的(((
以上,希望能解决你的问题
2020年04月30日 14点04分
3