Discuss Scratch

  • Discussion Forums
  • » 中文
  • » 想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因? [RSS Feed]
wood75
New to Scratch
2 posts

想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因?


想设计一个,马在动,小球也在动,然后球碰到马,脚本就结束。但是二者会擦肩而过,不知道哪里写的不对,请指教。


https://scratch.mit.edu/projects/178986938/
ioerr
New to Scratch
18 posts

想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因?

我是这样编的。

猫:
点击绿旗时
重复执行
移动 (10) 步
如果 <碰到 [ ball] ?> 那么
停止 [全部]
end
end


ball:
点击绿旗时
在 (10) 秒内滑行到 x: (-180) y: (0)

分析:你的程序判断的时间点是移动结束后是否还有相遇。指令是一条条执行的,得清楚执行顺序
ckluo
Scratcher
100+ posts

想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因?

wood75 wrote:

想设计一个,马在动,小球也在动,然后球碰到马,脚本就结束。但是二者会擦肩而过,不知道哪里写的不对,请指教。


https://scratch.mit.edu/projects/178986938/
要把ball的移动指令和触发指令分开
不然直到移动完才会检测
wood75
New to Scratch
2 posts

想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因?

感谢楼上二位和帮我修改测试程序的另一位朋友,我的错误原因就是没有搞明白,重复移动几步和在几秒内移动到某一个坐标间的区别。

如果是移动几步然后马上去判断是否会发生碰撞就可以。

如果用我原来的先移动到某一点再判断的话,那物体在行进过程中是不会触发碰撞指令的。

谢谢大家。
ioerr
New to Scratch
18 posts

想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因?

我的总结是:


1.步子要小点,最好大于对碰目标的最小直径;

2.我用小黄球,碰小猫,只要碰到任何部位边缘就可以触发碰撞;

3.要注意指令执行顺序。
4.3楼说的对,要么就放两个小绿旗,让“移动”和“碰撞”并行执行。

Last edited by ioerr (Oct. 17, 2017 08:35:01)

TwilightSparkleLover
Scratcher
100+ posts

想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因?

当[鳄鱼君想赛跑]
重复执行
移动 (你喜欢) 步
如果 <碰到 [对手 v] ?> 那么
停止 [全部 v]
end
end

scratch中文专区欢迎你! ::sensing
https:/ /scratch.mit.edu/studios/4659772/ ::sound
大家也可以看一下我的跳舞的线 ::motion
https:/ /scratch.mit.edu/studios/5290366/ ::operators
没办法,中文专区非常的冷清...
JackCommandBlock
New to Scratch
2 posts

想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因?

你的球的脚本是这样的:
点击绿旗时
移到 x: (-173) y: (-134)
重复执行
在 (5) 秒内滑行到 x: (173) y: (-134)
如果 <碰到 [Horse1] ?> 那么
停止 [全部]
end
end
这会导致在移动过程中不进行是否碰到的判定(因为它是要执行完才会去判定的)
建议修改:
点击绿旗时
移到 x: (-173) y: (-134)
在 (5) 秒内滑行到 x: (173) y: (-134)
点击绿旗时
重复执行
如果 <碰到 [Horse1] ?> 那么
停止 [全部]
end
end
就是把它拆成两块,让它们可以同时运行
  • Discussion Forums
  • » 中文
  • » 想两个运动的物体碰到后,脚本就结束。但是二者会擦肩而过,这是什么原因? [RSS Feed]

Powered by DjangoBB