【问题标题】:How to tell which edge was touched in Scratch?如何判断在 Scratch 中触摸了哪个边缘?
【发布时间】:2010-01-12 16:06:38
【问题描述】:

在Scratch中,感应类中有一个条件叫做touching,可以有edge作为参数。

鉴于条件返回 true,我如何判断 哪个 边缘被触摸(即场景的顶部、底部、左侧或右侧边缘)?

或者:如何判断场景的尺寸?我已经计算出位置 (x=0, y=0) 位于场景的中间。四个角点在哪里?

【问题讨论】:

  • Scratch wiki 广泛地解释了坐标系 here

标签: collision-detection mit-scratch


【解决方案1】:

制作 4 个精灵,所有你想要的任何颜色的细线。两个垂直的,两个水平的。将它们放在项目的边缘。在这四行中的每一行中添加一个起始块,然后是一组效果重影到 100 个块。这会在播放项目时隐藏该行。如果您将线条命名为 top、bottom、left、right,则很容易测试不同的 sprite 接触的边缘,因为您可以在一个 sprite 接触另一个 sprite(边缘)之后运行块。

整个项目高 360,宽 480,0,0 位于正中心。总是。

【讨论】:

  • 我认为@user2144827 的答案可能是找到这个的最好方法,因为仅仅为了检测一个精灵的哪个边缘被触摸而制作4个新精灵是非常低效的。它使事情变得杂乱无章,如果您有多个需要这个的精灵(或克隆)怎么办?
【解决方案2】:

你也可以这样做:

If x > 239 then do something

(将值 239(或更小)更改为您的目的,您可以跟踪右侧边缘)和x<-239 如果您跟踪左侧。

【讨论】:

    【解决方案3】:

    在传感类别中有一个touching x? 块。 x可以选为edge。

    【讨论】:

    • 这绝对是正确答案!!
    • 它没有回答“我怎样才能知道触摸了哪个边缘(即场景的顶部、底部、左侧或右侧边缘)?”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    相关资源
    最近更新 更多