| Please expand this article or section. You can help by adding more information if you are an editor. More information might be found in a section of the talk page. (January 2022) |
Color detection is detecting the color a sprite is touching, primarily using lists and the Touching Color block.
Programming
Script
Only one variable is necessary for the following script, being (color).
The following custom block is the script for color detection:
define get color // run without screen refresh
set [color v] to (0)
repeat (16777215) // 256^3-1=16777215, the total number of colors possible minus one
if <touching color (color)?> then // if it finds the color, the script stops
stop [this script v]
end
change [color v] by (1) // increments the color each time through the loop
end
Abusing Color Sensitivity
The previous script may be very slow depending on the color detected, but can be sped up by abusing color sensitivity. Scratch is unable to sense all 16777216 possible colors, and will only sense 16 different shades of blue and 32 different shades of red and green.
Improved Script
define get color // run without screen refresh
set [color v] to (0)
repeat (32)
repeat (32)
repeat (16)
if <touching color (color)?> then
stop [this script v]
end
change [color v] by (16) // cycles through shades of blue
end
change [color v] by (1792) // cycles through shades of green
end
change [color v] by (458752) // cycles through shades of red
end