萌新请教:两个角色的克隆体碰撞,怎样检测最精确?
scratch吧
全部回复
仅看楼主
level 2
这个问题是在做飞机大战的时候发现的,具体如下:现在有两个角色:子弹,敌机。我的子弹克隆体碰撞到敌机克隆体的时候,子弹克隆体消失(删除本克隆体),敌机克隆体碰撞到子弹克隆体的时候,血量-1(一个私有变量,初始值为3)。按道理,三颗子弹可以打死一个敌机,但是。。。。我十几颗子弹撞上去敌机一滴血都没掉。。。十分费解。考虑到两个角色是异步操作,可能子弹克隆体隐藏的时候,敌机克隆体还没有检测到碰撞事件,所以我在隐藏之前做了延迟等待,但是又出现了另一个问题。。。楼下继续说
2018年07月09日 02点07分 1
level 2
简单写个Demo,使用隐藏前等待n秒的方式,极难控制,每次运行都有可能出现不同的结果,我这个Demp是角色1克隆体被碰到5次之后删除克隆体,但是延迟之后要么就是超过5次碰撞都不消失,或者不到5次碰撞就消失了。
2018年07月09日 02点07分 2
前排提醒:坟贴勿回
2019年02月16日 22点02分
level 12
如果碰到...
等待0.2秒
删除本克隆体
2018年07月09日 02点07分 3
不需要碰撞次数
2018年07月09日 02点07分
@wty500 如果我要这个克隆体被击中多次才删除,不用变量记录怎么记录呢?
2018年07月09日 02点07分
@wty500 删除前等待只适用于两个克隆体碰撞都被删除,我希望的是一个克隆体碰撞到就删除,另一个克隆体被碰到多次才删除。。
2018年07月09日 02点07分
@吉他和猫cat 两个克隆体是不是同一个角色
2018年07月09日 02点07分
level 2
后来想通过广播去控制另一个角色的克隆体,发现根本没法控制。。。克隆体没有编号什么的,广播也没办法传变量,自己新建的积木只能角色私有使用。。。实在是想不到精确控制的办法了。。哪位大佬有做过的,真心希望不吝赐教。。。
2018年07月09日 02点07分 4
2.0的好像可以积木公有化,又好像是慧编程
2021年12月11日 11点12分
2.0的好像可以积木公有化,又好像是慧编程
2021年12月11日 11点12分
level 10
用广播并等待啊。异步这个情况不好。
2018年07月09日 02点07分 5
广播并等待,然后怎么处理接收到广播?
2018年07月09日 02点07分
@吉他和猫cat 其实不用搞得像上面图片那么复杂。
2018年07月09日 02点07分
level 10
子弹:
如果碰到 飞机
广播 碰到 并等待
删除本克隆体
飞机:
当收到 碰到
将 血量 改变 -1
2018年07月09日 02点07分 6
oops 飞机要加一个 如果碰到 子弹
2018年07月09日 02点07分
这样也不行的,在广播里面更改变量,更改的是角色的变量而不是克隆体的变量。我试了一下,如果这样做,在我其中一个飞机的克隆体血量扣完的时候,全屏的飞机克隆体都会被删除掉。
2018年07月09日 02点07分
@吉他和猫cat 不会的。还有你飞机血量是不是私有的。
2018年07月09日 02点07分
@射手joshua2006 只有在“当作为克隆体启动时”这个事件下更改变量,才会更改该克隆体的变量
2018年07月09日 02点07分
level 9
这个没毛病!
2018年07月09日 03点07分 7
如果血量是3的话,创建私有变量,每个克隆体启动时设为3,然后在我给你的脚本里(第2串增加一个血量的判定)
2018年07月09日 04点07分
忘了说了,第一张图是子弹,第二张是敌人。还有,那个Is clone?是私有变量!
2018年07月09日 04点07分
好的多谢
2018年07月09日 04点07分
level 2
结贴:在子弹角色克隆体碰到敌机角色克隆体时,子弹角色克隆体广播“碰到”,并等待。敌机角色接收到“碰到”广播,判断当前克隆体是否碰到子弹克隆体,如果碰到则生命值-1(一定要做是否碰到的判断,如果直接接收到广播把生命值-1,会把所有的敌机克隆体生命值都-1的)。在此感谢6楼大佬给出的解决方案。
2018年07月09日 04点07分 9
不是大佬[汗][汗]
2018年07月09日 05点07分
2018年07月09日 05点07分
@吉他和猫cat 不好笑[黑线]
2018年07月09日 05点07分
@射手joshua2006 在我心里,你是大佬,别人怎么认为我不管[乖]
2018年07月09日 05点07分
level 2
来个总结吧:
1.Scratch中的异步线程没有比较明显的控制方式,使用广播并等待功能可以解决同步问题,但是如果阻塞时间较长的话,不知道会不会崩溃。
2.广播面向的是所有的角色以及克隆体,但是怎么区分角色处理广播和克隆体处理广播,我并不是很明白。在上面我处理接收到“碰到”广播的时候,如果不做判断直接把私有变量-1,所有的克隆体的该变量都会-1;但是我加上“如果碰到角色1”这个判断之后,再操作私有变量,就仅仅改变当前克隆体的变量了。这一点如果有比较清楚的大佬,还望继续回帖,不吝赐教。
2018年07月09日 04点07分 10
我那个脚本好像是可以做到的,要不你试一试?
2018年07月09日 05点07分
@贴吧用户_7NW2K1K 好的,我试一下
2018年07月09日 05点07分
回复 吉他和猫cat :可以吗?
2018年07月09日 05点07分
@贴吧用户_7NW2K1K 可以的,但是还是不太明白,究竟怎样算是对角色的变量操作,怎样算是对克隆体的变量操作
2018年07月09日 05点07分
level 10
当克隆体被创建时, 它把所有的脚本都抄袭来, 但是会造成克隆体母体干同一件事。所以我们要找出克隆体在某某情况有什么特别之处。比如我们知道要扣血的飞机一定是碰到子弹的, 刚刚就用了这个条件把克隆体们分开来。
2018年07月09日 05点07分 12
我说被区分开来的克隆体们是指被打到的飞机。
2018年07月09日 05点07分
@射手joshua2006 明白了一些,广播事件是针对所有的角色和克隆体的,如果只希望某一个或一部分的克隆体处理这个广播,就加上该群体的特征判断,是这个意思吧[乖]
2018年07月09日 05点07分
@吉他和猫cat 对! 你应该看看吧里其它教程讲到克隆体的。对你有帮助的
2018年07月09日 05点07分
@射手joshua2006 嗯嗯,我在看的
2018年07月09日 05点07分
level 12
嗯哼
飞机:如果<碰到"子弹"> 把【血量】增加【-1】
[太开心]
2018年07月09日 06点07分 13
垃圾
2018年07月09日 06点07分
@贴吧用户_74QAJae 这一切我都在看
2018年07月09日 07点07分
吧主大驾光临[乖]
2018年07月09日 07点07分
@贴吧用户_74QAJae 诶这是谁[微微一笑]
2018年07月09日 07点07分
吧务
level 15
封坟线后再挖三天起步
2019年02月16日 22点02分 15
1