Unity: Game Making

Learning Objectives

To be able to: 

  • Use and recognise the tools of Unity 
  • Open and create a new 2D project in Unity 
  • Use and manipulate shapes in Unity to create Game objects
  • Apply basic scripts to objects

The features and tools of Unity

Opening Unity

In your Start Menu, scroll down to 'U' and open the Unity Hub

Creating a New Project

In your Unity Hub you will need to click on New Project and give it the settings on the next slide.

Creating a New Project

Select a 2D template in the main section of your Hub, then name your Project "Testing Tools"

 

Once you have done both, select 'Create Project' in the bottom right corner. 

Main Screen

Hierarchy

Inspector

Adding Shapes

Tools

Tools

Tools

Tools

Tools

Tools

Tools (Video)

View Points

Activity

Follow the instructions in the following slides to complete build your first game of Pong

Open a new Project

Go to File, New Scene and make sure to press "Basic 2D (Built-in)" -->

(You don't need to save previous work)

Downloading the square

Downloading the square

Downloading the square

Importing the square

Right click in the assets area (not over the folder), Select "Import new asset", select "square.png"

Importing the square

Importing the square

Rename the Square

Change the Background

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Setting the Boundaries and Goals

You can check the size fits by selecting Game at the top and look to see if your TopWall covers the entire width of the camera.

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Our Player1Goal needs to be outside of the camera and cover the height of the camera. 

 

(On the next slide)

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Setting the Boundaries and Goals

Creating the Players

Now that we have the boarders of the game, we need some players to control. 

Creating the Players

Creating the Players

Change the Tag of your Player1 to Player.

Creating the Players

Creating the Players

Adding Components

Adding Components

With all objects selected, click on add component in the bottom right and type in Box Collider 2D

Adding Components

Changing this allows the score to change when the ball hits the goal

Adding Components

Adding Components

Final Design Feature

Progress

Neat Labels

It is good practise to keep objects organised, so we will put the boarders into a folder

Neat Labels

Logic

You have now got the base of your game and the next step is to add in some logic so your game works. 

Player Logic

Player Logic

Player Logic

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Paddle : MonoBehaviour
{
    public KeyCode up;
    public KeyCode down;
    Rigidbody2D rigidBody;

    // Start is called before the first frame update
    void Start()
    {
        rigidBody = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKey(up))
	{
    		rigidBody.velocity = new Vector2(0f, 7f);
	}
	else if(Input.GetKey(down))
	{
    		rigidBody.velocity = new Vector2(0f, -7f);
	}
	else
	{
    		rigidBody.velocity = new Vector2(0f, 0f);
	}
    }
}

Copy and replace the code in the window that opens, with this code on the left. 

 

KEEP TRACK OF THE CAPITAL LETTERS!

 

Press CTRL + S to save your code, otherwise you won't be able to control your players.

Player Logic

Select both of your players

Player Logic

Player Logic

Player Logic

Test if your Players can Move

Press play again when you are done

Ball Logic

Ball Logic

Ball Logic

Copy and replace the code in the window that opens, with this code on the left. 

 

KEEP TRACK OF THE CAPITAL LETTERS!

 

Press CTRL + S to save your code, otherwise your ball won't move around.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball : MonoBehaviour
{
    Rigidbody2D rigidBody;

    // Start is called before the first frame update
    void Start()
    {
        rigidBody = GetComponent<Rigidbody2D>();
        Direction();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void Direction()
    {
        int direction;
        direction = Random.Range(0, 2);
        if(direction == 0)
        {
            rigidBody.velocity = new Vector2(5f, -3f);
        }
        else
        {
            rigidBody.velocity = new Vector2(-5f, 3f);
        }
    }
}

Ball Logic

Ball Logic

Ball Logic

Ball Logic

Freeze the Ball and both Players 

Freeze the Ball and both Players 

Game Engine - Goals

Game Engine - Goals

Game Engine - Goals

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Goal : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    private void OnTriggerEnter2D(Collider2D collider)
    {
        collider.GetComponent<Ball>().Direction();
        collider.transform.position = new Vector2(0f, 0f);
    }
}

Add the function OnTriggerEnter2D() to your script. 

 

 

 

Once you have, make sure to press CTRL + S to save your code. 

Game Engine - Goals

You should now have a fully functioning game of Pong!

 

Extension

 

Experiment with certain aspects of the physics to change the difficulty level of your games. You can try adapting:

 

  • The size of the paddles and ball or
  • The Linear Drag of your Players

Unity Lesson 1

By CJackson

Unity Lesson 1

  • 75