Hello, I am making a 2D game (along the ZX plane if that helps). I have some questions about making objects (enemies in this case) move?
1: What script would I use to make an object move randomly around the screen (at either a 30,45, or 50 degree angle) until it hits a wall, and then bounce of and just keep going)?
2: How can I make an object move, follow a player (I already have a script to just make something follow another object) but make it oscillate and twirl as it moves (so it looks kinda like a snake)?
3: Have a suction/drain type effect (specified objects that come within a certain radius of this object get sucked towards it until they reach it?
Thank you ( I know I have alot of questions). 
TofuDude, you do have a lot of questions! And actually, they are pretty good questions, which means they have pretty complex answers. Answers that depend a lot on how you are choosing to design the rest of your game code.
May I suggest that you focus on just a few simple problems, like No. 1 there, and get that working. I bet that will give you a lot of insight into how Unity works and you can answer some of your other questions ourself. Those that you can’t figure out you will at least be able to write more specific questions which are easier for the forum to answer.
As far as 1 goes - I’d look here:
and here:
if you are going the physics route,
or here if you are doing the bouncing math yourself:
Thank you. After some tweaking, I came up with this script (I decided to freeze the rotation and make it a start function, since being continuous caused it to get stuck in the corner), although now I have a new problem, after a while, it stops…Is there anyway to make it immune to friction, etc. I have tried making it kinematic, but then the physics dont work at all. I have also turned of drag and angular drag.
function Start() {
rigidbody.velocity = Vector3(10,0,10);
}
Look at the docs for physicmaterial. Even with no friction it still may get stuck though. If so give it a boost with force when velocity drops too low.