I'm only a couple of episodes into this series and this is honestly amazing. I've seen so many roblox scripting tutorial youtubers try and do game development series like these, but never manage to execute it as well as you do. You go really into depth and explain thoroughly whenever you try to teach something, instead of just giving us the code, and telling us to copy it down.
I like how he doesnt just create tutorials and tell you how do do things... he teaches you as well and shows you common mistakes people do. thats awesome
with this in hand, we could use this to when we hover over an enemy it can display their health, as well as towers, we can see their level, range etc. This series is very helpful!
The Mouse Raycast Script is here: local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local Item = nil local function MouseRaycast() --[ONLY ENABLE THE PRINT FUNCTION TO GET RESULTS OF MOUSE LOCATION]-- local MousePosition = UserInputService:GetMouseLocation() --print(mousePosition) local MouseRay =Camera:ViewportPointToRay(MousePosition.X, MousePosition.Y) --print(mouseRay) local RaycastResult = workspace:Raycast(MouseRay.Origin, MouseRay.Direction * 100) --print(raycastResult)
return RaycastResult end UserInputService.InputBegan:Connect(function(input, processed) if processed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then if Item:IsA("Basepart") then Item.Color = Color3.new(255, 0, 0) end end end) RunService.RenderStepped:Connect(function() local result = MouseRaycast() if result and result.Instance then Item = result.Instance end end) If the part doesn't change color, change Basepart into Part and it should work. Hope I was of any help. :)
Here's the script so you don't have to do it all and get stressed because you get an error! GameController: local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local camera = workspace.CurrentCamera local item = nil local function MouseRaycast() local mousePosition = UserInputService:GetMouseLocation() --print(mousePosition) local mouseRay = camera:ViewportPointToRay(mousePosition.X, mousePosition.Y) --print(mouseRay) local raycastResult = workspace:Raycast(mouseRay.Origin, mouseRay.Direction * 1000) --print(raycastResult) return raycastResult end UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.UserInputType == Enum.UserInputType.MouseButton1 then if item:IsA("BasePart") then item.Color = Color3.new(1, 0, 0) end end end) RunService.RenderStepped:Connect(function() local result = MouseRaycast() if result and result.Instance then item = result.Instance end end)
I wouldn't just copy and paste this. I would advise trying to understand it and write it yourself. You aren't learning if you just paste it, and if you don't understand it you can't make updates and changes in the future.
Thanks for dropping by. I know some of the things shown here are a little advanced bit if you're looking to get into scripting I'd recommend Che king out my beginner series on making your first game
local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local camera = workspace.CurrentCamera local function MouseRaycast() local mousePosition = UserInputService:GetMouseLocation() print(mousePosition) local mouseRay = camera:ViewportPointToRay(mousePosition.X, mousePosition.Y) print(mouseRay) local raycastResult = workspace.Raycast(mouseRay.Origin, mouseRay.Direction * 1000) print(raycastResult)
return raycastResult end UserInputService.InputBegan:Connect(function(input, processed) if processed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then if item:IsA("BasePart")then item.Color = Color3.new(1,0,0) end end end) RunService.RenderStepped:Connect(function() local result = MouseRaycast() if result and result.Instance then print(result.Instance.Name) end end)
Amazing tutorials! With this new feature, I'm wondering if we could do stuff like level up towers, view range, etc. looking forward to seeing where this tutorial goes. :)
Gnome, please do this in episode 5: Make inventory system of towers Animations of tower (shooting, idle) ofc Saving system Lobby Special abilities of towers
i thought you were making a tower defence not a paintball :D jk, really appritiate this tutorial, im not even making a towr defence, i watched this on random and it really helped me with my game, thnaks
The GameController script is kind of working but also not. I can make my avatar red by clicking it but not the baseplate or anything else. It says (Players.Me.PlayerScripts.GameController:24: attempt to index nil with 'IsA'
What's your philosophy behind naming your variables? Which variables do you name using PascalCase, camelCase, snake case, etc. Also keep up the great content always look forward to your next video!
One thing: To make a TD game like TDS, you need to get a lobby with elevators teleporting you to the main game, telling you which wave your on, intermission for placing towers, and spaced out enemies.
Nice but wait if actually we use world raycast to the last checkpoint to the before last checkpoint for see if zombie, if not then we world raycast again to the before last checkpoint and if not zombie we continue right to the start and if result then we check if it s an enemy and if yes then we found the 1 enemy Tada, sorry for the long text x)
This series is actually really helpful, I do have one question about line of sight. So basically, if there was a tower placed in the middle of the map and there was terrain between the tower and the enemy, the tower cannot shoot the enemy. So how would that be scripted
You could use raycasting for that if you wanted, though I don't think many games use line of sight for there towers. After all, it's more of an 'arcade' type game
i have a question to GnomeCode and you guys: How did GnomeCode turned the animations back on? In last episode animations didn't work. Can someone tell me how? GnomeCode answer please.🤗
Will you do things like a shop, unlocking towers with levels, tower upgrades, and animations, certain places where towers can be placed, or enemies attacking towers and cool stuff like that, or some of the basic stuff like things from Bloons TD? Either way, it's helping people who don't know much about scripting create a tower defense game
That's the problem. IMO people who are new to scripting should start with much simpler projects in which don't make you just copy scripts, like 89% are doing. I wish every person in the comments would know that you won't learn or make a good game if you ALWAYS use other's stuff and pollute the comment section with "Hi WiLl yOu mAkE a flYIng rObOT That SHooTs Cars?? Btw I'M haVinG proBLEms with The ScRipT i litEraLLy juSt CopIeD fRom YOu!!!1 whIch meAns tHe TuToRIAl wON't WoRK and it'S YOuR faULt!!!!1 "
@@calengo454 true but at the same time no. I learned ALOT from tutorials and now I can code stuff but nothing crazy. The problem with people is that they just copy and don't look into it.
@@lambarini yes, that's what i meant. i was referring to people that always ask for others to make stuff for you, without even trying anything. i had a friend like this and thankfully i didn't make anything for him. i also learned from "how to make a game" tutorials but their comment sections are filled with people that think scripting is just copying from a tutorial, which almost always end up in them saying "tutorial doesn't work". sure copying some stuff is ok who doesn't do it but it's like you said, they don't look into it and have absolutely no idea what they're doing my biggest problem with doing gigantic projects is that i tried to make one when i didn't know anything and i almost gave up forever, and i don't really want that to happen to other people... it sucks
Are u trying make a TDS game without know how script? The idea of these videos are learn and make urself, not copy and waiting for the next episode lol
Hey gnome I have a question could u show a tutorial on how to make a map voting system and when the map gets the higher votes it teleports u to that map with a timer when the game is done and a intermission so u can be ready to select that map
I'm only a couple of episodes into this series and this is honestly amazing. I've seen so many roblox scripting tutorial youtubers try and do game development series like these, but never manage to execute it as well as you do. You go really into depth and explain thoroughly whenever you try to teach something, instead of just giving us the code, and telling us to copy it down.
Can we all agree that these tower defense stuff get better and better the more we watch them
@Cayden lee Cox yep probably
eye candy
Yessir
Ya
I do
I like how he doesnt just create tutorials and tell you how do do things... he teaches you as well and shows you common mistakes people do. thats awesome
thats what tutorials are they teach you
yeah it's great I'm following the series to learn and test my scripting
It's great when the SAME PERSON (Or should I say bot) COMMENTS THE SAME MESSAGE
with this in hand, we could use this to when we hover over an enemy it can display their health, as well as towers, we can see their level, range etc. This series is very helpful!
you can use mouse.Target tho
@@LeoKhol thats what i was saying LMAO
@@LeoKhol mouse is superseded
@@inactive3772 but it’s not deprecated
@@pepperdayjackpac4521 its recommended to use other methods
I love how you make tutorials from scratch instead of a “Kit”.
oh my gosh you are right. ive tried to make a fighting game but every tutorial said to use so many scripts
Finaly another episode that i can spend 5 hours to do what he did in 15 minutes
true
what? it takes like 30 mins to follow his tutorials unlike any other ones that actually take 5 hours...
it takes me 14 minutes 👀
you’re complaining about that instead of commenting something like “your teaching me a lot, love the tutorials”
8:48
Geez man! You really banging these out. Love it!
love ur vids
didnt expect you here at all hoops, i love your channel!
BEE SWARM MAN!?
FINALLY YES I'VE BEEN WAITING THANK YOU FOR MAKING THESE TUTORIALS SO MUCH!
The Mouse Raycast Script is here:
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local Item = nil
local function MouseRaycast() --[ONLY ENABLE THE PRINT FUNCTION TO GET RESULTS OF MOUSE LOCATION]--
local MousePosition = UserInputService:GetMouseLocation()
--print(mousePosition)
local MouseRay =Camera:ViewportPointToRay(MousePosition.X, MousePosition.Y)
--print(mouseRay)
local RaycastResult = workspace:Raycast(MouseRay.Origin, MouseRay.Direction * 100)
--print(raycastResult)
return RaycastResult
end
UserInputService.InputBegan:Connect(function(input, processed)
if processed then
return
end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if Item:IsA("Basepart") then
Item.Color = Color3.new(255, 0, 0)
end
end
end)
RunService.RenderStepped:Connect(function()
local result = MouseRaycast()
if result and result.Instance then
Item = result.Instance
end
end)
If the part doesn't change color, change Basepart into Part and it should work. Hope I was of any help. :)
what does the like on the print
thanks bro i was struggling cus of an error which it said: "attempted to index nil with "GetMouseLocation""
you dont need to change Basepart to Part you need to change Basepart to "BasePart" BasePart with an uppercased P
@@RobbyTheBall The roblox studio concept changes in further updates so it might be different between other people
we gotta make this top comment
the outro is the best thing i've seen all week
Here's the script so you don't have to do it all and get stressed because you get an error! GameController: local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local item = nil
local function MouseRaycast()
local mousePosition = UserInputService:GetMouseLocation()
--print(mousePosition)
local mouseRay = camera:ViewportPointToRay(mousePosition.X, mousePosition.Y)
--print(mouseRay)
local raycastResult = workspace:Raycast(mouseRay.Origin, mouseRay.Direction * 1000)
--print(raycastResult)
return raycastResult
end
UserInputService.InputBegan:Connect(function(input, processed)
if processed then
return
end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if item:IsA("BasePart") then
item.Color = Color3.new(1, 0, 0)
end
end
end)
RunService.RenderStepped:Connect(function()
local result = MouseRaycast()
if result and result.Instance then
item = result.Instance
end
end)
god bless you
@@Ego_to_ID You're welcome.
TYSM it saved a lot of time i think
I wouldn't just copy and paste this. I would advise trying to understand it and write it yourself. You aren't learning if you just paste it, and if you don't understand it you can't make updates and changes in the future.
w rizz
Merry Christmas Gnome! Well done for this year and best of luck for the next!
its like each of these videos is a boss battles for me because at end i always do something wrong. *best roblox coding youtuber ever btw*
I don’t understand very much of this but I still love watching it
Thanks for dropping by. I know some of the things shown here are a little advanced bit if you're looking to get into scripting I'd recommend Che king out my beginner series on making your first game
Thank you gnome, your tutorials are sooo amazing!!! Please keep up the great work!
Finally someone do tower defense tutorial which I wanna learn from a long time😥 thank u!!!
the best tutorial RUclipsr ever
This is just one word "AMAZING!"
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local function MouseRaycast()
local mousePosition = UserInputService:GetMouseLocation()
print(mousePosition)
local mouseRay = camera:ViewportPointToRay(mousePosition.X, mousePosition.Y)
print(mouseRay)
local raycastResult = workspace.Raycast(mouseRay.Origin, mouseRay.Direction * 1000)
print(raycastResult)
return raycastResult
end
UserInputService.InputBegan:Connect(function(input, processed)
if processed then
return
end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if item:IsA("BasePart")then
item.Color = Color3.new(1,0,0)
end
end
end)
RunService.RenderStepped:Connect(function()
local result = MouseRaycast()
if result and result.Instance then
print(result.Instance.Name)
end
end)
Amazing tutorials!
With this new feature, I'm wondering if we could do stuff like level up towers, view range, etc. looking forward to seeing where this tutorial goes. :)
I’ve always wanted to make a td game ever since below natural made one and now I can because you are making this!
0
I bet you at the end of this tutorial 75k subscribers good work gnomecode
Gnome, please do this in episode 5:
Make inventory system of towers
Animations of tower (shooting, idle) ofc
Saving system
Lobby
Special abilities of towers
this is episode 5
too much for one episode.
Its basically one of those per ep but its too soon for that
idle animations for towers is just add a random animate script that loops forever
This episode is episode 5...
Thank you this is an amazing tutorial this is the first GOOD one i have found in ages
i will probably never be abled to make a game like that but its fun to watch you make one ngl
i tried once... but failed. thanks for helping me see the light! you're the best!
Great tutorial, even after 2 years! The only thing I'd like to see is mobile support for the input.
You literally showed me all the things i needed to know, that other youtubers barely could make a tutorial on!
You're welcome, best of luck with your project!
@@GnomeCode Thanks!
im making a case game where you can build with a hammer and needed to get something to help me out, this was the perfect video 10/10
very good going to do this episode later my tower defense game is forming because of this series
Tysm man! Best TD series ever!
When is episode 6 coming out? I’ve always wanted to make a tds game for years but here it is!! Thanks so much GnomeCode!!
maybe
2 days least
probably 5 days max
bro it came out 3 hours ago dont rush
You too can do:
Players = game:GetService("Players")
Mouse = Players.LocalPlayer:GetMouse()
task.wait(3)
print(Mouse.Hit.Position)
2:23 I learned that not putting a wait is a bad idea the hard way lol
jeez, must have did the poor gpu a burden
@@Zylxknah the script just ends now (luckily)
i thought you were making a tower defence not a paintball :D jk, really appritiate this tutorial, im not even making a towr defence, i watched this on random and it really helped me with my game, thnaks
The GameController script is kind of working but also not. I can make my avatar red by clicking it but not the baseplate or anything else. It says (Players.Me.PlayerScripts.GameController:24: attempt to index nil with 'IsA'
Try using a function
Wow! This is amazing!
love this, hope to see part 6, cant wait to brag to my friends i made a tower defense game from scratch
you should not brag it will come back to you
Following a tutorial isn't from scratch
Copy scripts isn’t from scratch
Best of luck with your game!
@@Wertyhappy27 what i mean is i didnt used that many free models
That's so simple to understand, thank u bro ;)
Always great to hear, thank you!
yes i knew it came today
this is gonna be great
Oh also fun fact
all episodes put together (so far) are 1 hour, 20 minutes, and 28 seconds long
Much better broken down into individual episodes!
@@GnomeCode yep
Another Awesome Video
ik u upload next video fast but i want them faster i cant wait to complete my game thanks so much for helping me
This one felt so short😂
What's your philosophy behind naming your variables? Which variables do you name using PascalCase, camelCase, snake case, etc.
Also keep up the great content always look forward to your next video!
Good question. I always name services in PascalCase using their full name, then generally use camelCase for all other variables
@@GnomeCode what the difference??????
@@GnomeCode Thank you so much
@@GnomeCode GnomeCode everything is working but the raycasting doesn't work for mobile does anyone know a way to make it work on mobile also?
@@entityofanimations3952 he said in the video it won't work on mobile.
my computer died from your great knowledge
YO LETS GO THANKS FOR THE TUTORIAL
A bit late, but congrats on 3 years gnome! :D
Thank you!
@@GnomeCode No problem! I love your content!
YASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
I was having a ton of trouble with unions not changing colour and bam 14:08 he just solves it XD
This is amazing your so underrated
Bro u gonna make me best tower defence simulator game
Can you make a lobby and shop at the end of the series
I'm trying to make my own tower defense game and I was just wondering so I can make my dream game
Sure, though we need to make all the main game mechanics first - much to do!
@@GnomeCode thank you
@@Name_thing it is gonna be star wars tower defense not the best graphics since im a solo developer but trying my best
@@GnomeCode im gonna add you as a tower youll be a jedi what color light saber you want
Oh nice
One thing: To make a TD game like TDS, you need to get a lobby with elevators teleporting you to the main game, telling you which wave your on,
intermission for placing towers, and spaced out enemies.
yeah duh almost every TD game has that
just keeps getting betterawwerrwe
“We will take things slow and steady!”
Me looks away for 1 millisecond
And that’s it for this tower defense series’s!
Me: Wait what-
thx for the tutorial i love this series!
The code worked for you? Because mine doesnt
@@Jokubasas it certainly does, did you double-check that your code is exactly the same as gnomecode's?
@@jinxed-truly i did it a lot of times i even changed the BasePart into Part and none worked
Im not even gonna use this. But im watching it for fun (: keep up the Good work Gnomecode!
Thanks, will do!
Merry christmas everyone god bless us all
May you do a reverse path tutorial for humvees or things that come from exit
Nice but wait if actually we use world raycast to the last checkpoint to the before last checkpoint for see if zombie, if not then we world raycast again to the before last checkpoint and if not zombie we continue right to the start and if result then we check if it s an enemy and if yes then we found the 1 enemy Tada, sorry for the long text x)
YESS PART 5!!!!!
This series is actually really helpful, I do have one question about line of sight. So basically, if there was a tower placed in the middle of the map and there was terrain between the tower and the enemy, the tower cannot shoot the enemy. So how would that be scripted
You could use raycasting for that if you wanted, though I don't think many games use line of sight for there towers. After all, it's more of an 'arcade' type game
I don’t know how many parts he has anyway
Ths is so cool I'm excited if you end of crate the map
i have a question to GnomeCode and you guys: How did GnomeCode turned the animations back on? In last episode animations didn't work. Can someone tell me how? GnomeCode answer please.🤗
bro press play
Amazing! Thank you!
Will you do things like a shop, unlocking towers with levels, tower upgrades, and animations, certain places where towers can be placed, or enemies attacking towers and cool stuff like that, or some of the basic stuff like things from Bloons TD?
Either way, it's helping people who don't know much about scripting create a tower defense game
That's the problem. IMO people who are new to scripting should start with much simpler projects in which don't make you just copy scripts, like 89% are doing. I wish every person in the comments would know that you won't learn or make a good game if you ALWAYS use other's stuff and pollute the comment section with "Hi WiLl yOu mAkE a flYIng rObOT That SHooTs Cars?? Btw I'M haVinG proBLEms with The ScRipT i litEraLLy juSt CopIeD fRom YOu!!!1 whIch meAns tHe TuToRIAl wON't WoRK and it'S YOuR faULt!!!!1 "
@@calengo454 true but at the same time no. I learned ALOT from tutorials and now I can code stuff but nothing crazy. The problem with people is that they just copy and don't look into it.
@@lambarini yes, that's what i meant. i was referring to people that always ask for others to make stuff for you, without even trying anything. i had a friend like this and thankfully i didn't make anything for him. i also learned from "how to make a game" tutorials but their comment sections are filled with people that think scripting is just copying from a tutorial, which almost always end up in them saying "tutorial doesn't work". sure copying some stuff is ok who doesn't do it but it's like you said, they don't look into it and have absolutely no idea what they're doing
my biggest problem with doing gigantic projects is that i tried to make one when i didn't know anything and i almost gave up forever, and i don't really want that to happen to other people... it sucks
Are u trying make a TDS game without know how script? The idea of these videos are learn and make urself, not copy and waiting for the next episode lol
@@Crazy4Beyonce no, I know how to script and I'm not making a tower defense I'm making a platformer game
ur videos are so good, I'm also trying to make a tower defense game and I want a main lobby in it. Can u make a video about how to do this plss?
AGREED
It’s not that hard you just make one
@@That_stupid_guy HOW?
Yes, but it probably won't be until near the end
Agree, Btw gnomecode u will make lobby tutorial and the shop thing (or others) right?
thanks gnomecode!! someone in ur discord helped me btw
if you click and doesn't paint red You may need to change BasePart to Part
wheres the "my fellow gnomes"?? good tutorial though nice job
Will we get to make difficulty buttons before round 1 starts? Like Easy, Normal, Hard modes?
i WATCHED YOU OTHER VIDEO THERE AMAZING :OOOOOOOOOOOOOOOOOOOOOOOO
Additional towers and their repsective abilities and specialities (e.g AOE) should be a thing for the next episode(s)
You should make another video about advanced enemys. Like editing speed of enemys. Changing tower targets to strongest, closest, or first enemy.
Changing the speed of enemies is easy it’s in the humanoid properties
@@raginggshorts5094 ikr
when you said "GameController" i accedentaly typed "GamingController"
i guess im just a true gamer B)
Can u do a matchmaking - lobby please and thanks for your tutorial !
this is literally what I’ve been looking for
this is working so far i made a leak for my td game
For an episode could you show us how to make different enemies have different health values? + healthbar?
if you go to humanoid under your enemies you should be able to set health and maxhealth from there
YES
NOICE vid
Wooo made it to #5
Hey gnome, can you make a part 6 where you can get different towers? If you could, that would help alot, thanks!
"we had this tower that striked hell and fury"
-gnomecode
Hey gnome I have a question could u show a tutorial on how to make a map voting system and when the map gets the higher votes it teleports u to that map with a timer when the game is done and a intermission so u can be ready to select that map
yes thank you!
Thanks 😊
The ray-casting is not working for me and neither is the mouse position, but this is a great tutorial series so far! Keep it up :)
Same
Same 1 year later
sadly enough
I fixed it!
U have to delete the mob animations script
Hello, GnomeCode!
Can I use Player:GetMouse() instead of mouse raycasting ?
i aint gnome but- no
@@lllllllll--8 I'm pretty sure you can.
@@Triploonic ye now that the darn code ain't working I think so too
Basiclly i get noob enemie then i did remodel as my model for tower defense game.By the way, thank you so much because other are just outdated 😁
Should I just disable first person, because it doesn't work in first person at least for me? But that was a really good video, good job!
You know you're doing everything right when you colored the whole map in the color
keep up the Good Work 1 thing tho soon can u teach us how to make units like jeeps and so that the dev can spawn enemys with admin cmds pls
make video on animate attack tower pls!
Imma do this next week
6:10
you should get to 100K subs
You should do the upgrade tower
Nice
Peaceful tower defence game for at least 10 sec before you start… TESTING OUT YOUR RAYCASTING SYSTEM