Discuss Scratch
- Discussion Forums
- » Help with Scripts
- » If(touching) not working
- jkris11
- New to Scratch
1 post
If(touching) not working
So I have to make a simple game for my summer homework, basically I'm making a game where you as a bat have to catch blue dots to gain score, but the problem is that this does not work, here's a screenshot
http://imageshack.com/scaled/large/809/is19.png
http://imageshack.com/scaled/large/809/is19.png
- drmcw
- Scratcher
1000+ posts
If(touching) not working
The script needs to be inside a forever loop with a when green flag clicked to start it or you could try putting it inside your existing forever loop.
- clubpenguin552222
- Scratcher
100+ posts
If(touching) not working
You need a forever loop:
forever // This is in the control tabAlso you don't need an
if < touching color [#0000FF] >
change [Score v] by (1)
end
end
stop scripton the final of the
when [arrow v] key pressed
change y by (1)
or
change x by (1)
Last edited by clubpenguin552222 (Aug. 31, 2013 17:01:46)
- ats-ll
- Scratcher
75 posts
If(touching) not working
fix:
when gf clicked
forever
forever
if <touching [Spirte2 v]?>
i am got in! Maki-Tak!
- DotDash
- Scratcher
1000+ posts
If(touching) not working
That would just slow it down. fix:when gf clicked
forever
forever
if <touching [Spirte2 v]?>
My browser / operating system: MacOS Macintosh X 10.8.5, Chrome 29.0.1547.76, Flash 11.8 (release 800)
- davidkt
- Scratcher
1000+ posts
If(touching) not working
Try this:
when gf clicked
forever
if <touching [Dot v]>
change [Score v] by (1)
Remember when I looked like this? I still do.
Float, my Scratch 2.0 mod | My (somewhat under-construction) blog
Float, my Scratch 2.0 mod | My (somewhat under-construction) blog
- ats-ll
- Scratcher
75 posts
If(touching) not working
beacuseThat would just slow it down. fix:when gf clicked
forever
forever
if <touching [Spirte2 v]?>
when gf clicked
forever
if <touching color [#58A571]> then
turn right (15) degrees
end
Last edited by ats-ll (Sept. 1, 2013 23:33:02)
i am got in! Maki-Tak!
- ohelab
- New to Scratch
2 posts
If(touching) not working
i aslo had a touble with a game i made i made it so that if my cat touchs red then it shrinks
if <> then
say [MEOW] for (2) secs
set size to (10) %
end
- ohelab
- New to Scratch
2 posts
If(touching) not working
sorry
if <touching color [#f0f]?> then
set size to (10) %
end
end
Last edited by ohelab (Jan. 23, 2014 04:30:15)
- miku2020
- Scratcher
1 post
If(touching) not working
Hey you need to add wait something like 0.0001 so it can register that it touches
- mickylee
- New to Scratch
3 posts
If(touching) not working
I had a similar problem with a project. It worked on one of the sprites, but not the other. When I put the forever block around it, as suggested above, it worked just fine on the second one. Can anyone explain why this is needed?
- daffy1234
- Scratcher
100+ posts
If(touching) not working
There's two issues here.
1) the code is never being ran. Every block of code needs a "when " block right above it. In this case, you'll probably want this one
2) Once it is ran, it stops. It needs to be in a loop
And this works, however, I have a little bit of advice to make the code run better. Doing it this way will have the code constantly checking, over and over and over, and if you ever decide to make a big game with a lot of scripts, these add up. I suggest trying this.
What this does is it waits patiently until it's touching the other sprite, then it runs the code, then it waits patiently until it's no longer touching the sprite. After that, the process repeats. In your case, where you're counting up a score, this is probably what you want.
1) the code is never being ran. Every block of code needs a "when " block right above it. In this case, you'll probably want this one
when green flag clickedOtherwise, the code will never run unless you run it directly by clicking it.
2) Once it is ran, it stops. It needs to be in a loop
when green flag clicked
if (touching [... v] ?) then // this check is done once, then the script stops.
code
end
when green flag clicked
forever
if (touching [... v] ?) then // this check is done constantly, and runs the code whenever it's true
code
end
end
And this works, however, I have a little bit of advice to make the code run better. Doing it this way will have the code constantly checking, over and over and over, and if you ever decide to make a big game with a lot of scripts, these add up. I suggest trying this.
when green flag clicked
forever
wait until <touching [... v] ?>
code
wait until <not <touching [... v] ?>>
end
What this does is it waits patiently until it's touching the other sprite, then it runs the code, then it waits patiently until it's no longer touching the sprite. After that, the process repeats. In your case, where you're counting up a score, this is probably what you want.
- Discussion Forums
- » Help with Scripts
- » If(touching) not working