✓ Accepted answer
Hi, after talking to you in the community chat I have come up with this.
The main problem is you said
if rock.Parent.Name == "Rocket" then
rock is the parameter of the function of a .Touched event. This will output the object that touched the part during the event. So you need to access the name of the object, not the Parent. The parent ends up being workspace (I checked the code of the rocket launcher)
But also, the rocket launcher model you are using isn't the best when it comes to code. The collisions are messed up because of the rocket propulsion. Sometimes the part would detect hits, other times it wouldn't. I recommend using the ROBLOX official rocket launcher, which I found to be the second rocket launcher model that shows up when you search for one. Hover over it and look under the image, it should show "ROBLOX" as the author. That one seems to fire the touch event always.
You should always use a debounce during .Touched events (unless for some reason you can't)
Here's more info on that at https://developer.roblox.com/en-us/articles/Debounce
Let me know if you need anything else.
local db = false
script.Parent.Touched:connect(function(rock)
if not db and rock.Name == "Rocket" then
db = true
print("HIT")
db = false
end
end)