Tips on how to make a breath ability that can freeze people

Eyo, Imma just follow the cool guidelines

  1. What do you want to achieve?
    I want to make a Superman character, and one of the abilities he’s meant to have is freezing breath. As the player moves the mouse left and right, Superman should be blowing left and right slowing enemies, damaging them (and if I have time, eventually adding some sort of freezing status)

  2. What is the issue?
    Well I had a few ideas of how to do this, and even though one of them work, I don’t know if its necessarily a good way of solving this

  3. What solutions have you tried so far?
    The main idea I had was, as Superman was moving, he would move a part left and right, that part would be transparent, and I’d detect players that are within that part. That way I’d know server-side who to damage and slow.

The way I check if the player is being detected by a part is very simple, I add a part, and add a simple lil script to it, and walk into the part, but the response never shows anything touching it

local part = script.Parent

while(wait(1)) do
	print("i received", #part:GetTouchingParts())

I want to point out that I read this (Simple trick to make GetTouchingParts work with non-CanCollide parts) and it did fix my issue.
Essentially just adding one line before the wait.

part.Touched:Connect(function() end)

But I don’t know if this is really the solution I should go for?

I guess my real question is, how would you guys accomplish this? I know that things like Zone and Region3 are a thing, but that seems overkill, on top of that I don’t think Region3 would work.

This is outdated – please view the solution on that post.