I’m quite new here, as I’ve never developed a single thing in my life. I’ve never done any coding ever before, however I thought I would try to learn the basics of Unity as a hobby. I’m motivated to learn how to make creative/fun games, however, I became frustrated when I realized that I may be in over my head. I watched Brackey’s “how to make a game” videos on youtube where he demonstrated how to make the cube runner game, I completed that project. Then I decided that I would watch and complete the Unity official tutorials that come with the actual software. The “roll-a-ball” game was simple enough, and I completed that. Now, I’m currently on the “Space Shooter” tutorial. I’m about 12 videos into the tutorial, and I’ve come to realize that the tutorials are really pushing me to use the “Unity scripting API” to learn. I think this may be one of my main issues with learning, I can’t understand anything in that directory. I know it’s supposed to be as simple as possible for everyone to learn, but it seems like the descriptions of even the simplest of things are written in a completely different language. For example, in one of the recent videos I watched, we had to make an asteroid prefab rotate randomly to emulate how an asteroid would behave in space. We are told to use:
rb.angularVelocity = Random.onUnitSphere;
When I check the API for what the hell “onUnitSphere” does, it says:
Returns a random point on the surface of a sphere with radius 1 (Read Only).
I don’t know what that means, and if it were not for the tutorial telling me to choose it, I would never have thought it does what it actually does. I feel like I won’t be able to learn this program because I simply cannot comprehend what even the simplest of things do. Currently, I’m able to memorize what certain commands do and then emulate them in a script. I do not believe that is the same as “knowing how to script.” Has anyone else felt like this before? And if so, do you have any advice for a newbie? Thanks
Sounds like you need a basic foundation in maths and logic first. There should be plenty of primers on YouTube.
Once you have that, try and get a solid foundation in C#. The scripting section in learn isn’t bad. But you could also check out the yellow book or google C# courses.
Once you can do maths, logic and code, programming in Unity will be a breeze.
@Kiwasi 's advice is good, but it’s also possible to approach it the other way. As a yoot I first learned how to program; and then I found that math and logic were easy (because I had learned to program).
So, one valid approach: simple persevere. Keep doing those tutorials, memorizing and using things even without understanding, if necessary. This will present the same concepts over and over, though dressed in different clothing, and eventually you will come to understand them.
One trick you will learn is to break things down. Let’s take the example you posted above.
This sounds like Greek to you. But is it really? Let’s take it bit by bit:
Returns something… What does that mean? You may know by now that this refers to a function that you call, and it gives you back a value. OK, so this is a function that gives us something. What does it give us?
Returns a random point. Hang on, what does it mean by “point”? Let’s look at the function prototype just above.
public static Vector3… public… you could look that up, or skip it for now.
static… same deal, not really what we’re looking for…
Vector3. Aha! So by “returns a point” they really mean “returns a Vector3” (which you probably know already is just a set of x, y, and z values).
Returns a random point. So the Vector3 that this returns is, in fact, a random one. You probably know what that means — it’s different every time, like drawing cards from a deck or rolling dice.
…on the surface of a sphere… OK, this part might be genuinely confusing. But what do we know about spheres? Well, they’re round. They have a surface, and they have an inside. The Earth is one. So you can imagine a sphere as a cloud of points. This says, on the surface of a sphere, so I guess we’re talking about points on the just the outside, not the interior of a sphere. Can you picture that?
sphere with radius 1. Well this is pretty clear: spheres can be any size, but this one has a radius of 1 (look up “radius” if you don’t already know the term).
So, now you’re picturing a cloud of points, forming a sphere with radius 1, and this function picks one of these at random and returns its x,y,z values to you. Handy if you need a vector of length 1 that points in a random direction. Or in the example you were studying, if you’re using those x, y, and z values as angular velocity (spin), and you simply want to assign a random spin to your object.
The jargon and concepts used in Unity can be overwhelming to a beginner. And looking up thing in the docs can just supply more jargon and concepts. Frustrating, I know.
The fact is, we all have been there and if you stick with it, it will become easier and things will be a lot more clear. Keep with the tutorials until you have some bit of comfort with Unity and scripting, then try something on you own. Nothing big, in fact something quite small. Work out the issues as they come, break things down into smaller steps.
All developers have one thing in common, perseverance!
Hm alright. So do you guys think the Unity tutorials are a bit too advanced for me then? Should I start somewhere else and eventually move onto the Unity ones? Or should I stick with it and basically copy/memorize the code that the tutorials have me writing? I don’t mind dropping them and starting somewhere else if you more experienced people think it will be more beneficial to me in the long run. Thanks again for your answers.
Each person approaches learning differently. You just need to find an approach that works for you.
I personally found the complete projects a waste of time. The scripting section was okay. But I did most of my learning by reading the manual. I googled every word I didn’t understand until I did understand it. Its a brute force approach to learning that works well for me.
You need to find the approach that works for you. How do you normally learn new things?
I would like to reach a beginner or intermediate level… But I cannot understand the scripting documentation to learn new things which is my main issue I think.
Hmm… To be honest this is the first time I’ve seriously tried to learn anything such as a program. So I’m not sure what approach to take. I’m a bit clueless
I guess the method I instinctively went to when trying to learn this stuff was just sitting down and doing following along with tutorials. Every day I try to see if i can remember the things I’ve done in the tutorial by doing the entire project from scratch without having to reference the tutorial. I’m able to remember everything I’ve done so far, however I feel like I’m only memorizing how to do specific things.
An example to compare it to would be something like, if I was trying to learn math and I forced myself to memorize that 5*5=25. Yes I know the answer to the question, but I don’t know why the answer is 25, if you know what I mean. I want to get to a point where I can visualize something in my head and then eventually create it in Unity, no matter what it is. I hope I’m explaining this correctly
Consider giving Ben Tristem’s Learn to Code by Making Games course a shot. Beyond learning C# and Unity, taking the course could help with staying motivated through the learning process. The course also offers a support community at Gamedev.tv, where you may find likeminded students and alumni willing to help.
Of course this kind of thing isn’t for everyone, yet sometimes having a good coach can make all the difference when approaching something that appears insurmountable or feels overwhelming.
I know exactly the same feeling that you are describing. I started to learn Unity last summer as a hobby. I have never done any programming myself. I went through the official Unity tutorials and those were helpful, but I was more memorizing what they were presenting. Thus, when I started to make my own project, I started to look at the API, and I was completely lost and overwhelmed as none of the API made any sense to me. It was like a foreign language. I still struggle to learn as the API is really important. However, I don’t understand the language used in. What I have been doing is making a project from scratch. I then break down tasks step by step. I keep the tasks simple, and try to take my time in figuring out the logic part of it. I struggle more with the logic and math aspect of coding more than anything else.