【求组】如何实现判断克隆体碰撞克隆体
scratch吧
全部回复
仅看楼主
level 3
woaipic65 楼主
想做个飞机大战,但是判断子弹碰撞敌机遇到了问题,有大佬知道吗
2020年05月08日 07点05分 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年05月08日 07点05分 2
额结构上一样,你看着改一下吧。
2020年05月08日 08点05分
感谢
2020年05月09日 01点05分
level 6
在删除克隆体前加个0.0001的时间等待
2020年05月08日 09点05分 3
这方法最简单直接,但是原理是什么呢,是跟cpu执行代码顺序有关吗
2020年05月09日 01点05分
@woaipic65 是判断混乱,有时AB二个克隆体相遇,A克隆体按程序判断相遇删除了,这时B克隆体却因为A克隆体删除而没有了删除前提条件,从而B克隆体还存在。加上0.0001时间是给电脑判断AB克隆体都相遇了,然后各自删除。
2020年05月09日 05点05分
S3中“等待【0】秒”效果一样,默认为等待1侦(运行一块积木所需的时间)
2022年06月17日 14点06分
@lmtcomcn 牛逼
2023年03月25日 04点03分
1