0% found this document useful (0 votes)
61 views6 pages

Lesson Plan 3.1 - Jump Force

The document outlines steps to set up basic gameplay for a 2D platformer prototype in Unity. It will guide the reader through choosing a background and player character, enabling jumping via spacebar input, tweaking jump forces and gravity, and preventing double jumping by tracking if the player is on the ground.

Uploaded by

Agus Susanto
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views6 pages

Lesson Plan 3.1 - Jump Force

The document outlines steps to set up basic gameplay for a 2D platformer prototype in Unity. It will guide the reader through choosing a background and player character, enabling jumping via spacebar input, tweaking jump forces and gravity, and preventing double jumping by tracking if the player is on the ground.

Uploaded by

Agus Susanto
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

 
 
 

3.1​ J​ ump Force 


 
Steps: 
Step 1: Open prototype and change background 

Step 2: Choose and set up a player character  Example of project by end of lesson 
Step 3: Make player jump at start 

Step 4: Make player jump if spacebar pressed 

Step 5: Tweak the jump force and gravity 

Step 6: Prevent player from double-jumping 

Step 7: Make an obstacle and move it left 

Step 8: Create a spawn manager   

Step 9: Spawn obstacles at intervals 


 
 
Length:  90 minutes 

Overview:   The goal of this lesson is to set up the basic gameplay for this prototype. We 
will start by creating a new project and importing the starter files. Next we 
will choose a beautiful background and a character for the player to control, 
and allow that character to jump with a tap of the spacebar. We will also 
choose an obstacle for the player, and create a spawn manager that throws 
them in the player’s path at timed intervals.  

Project  The character, background, and obstacle of your choice will be set up. The 
Outcome:  player will be able to press spacebar and make the character jump, as 
obstacles spawn at the edge of the screen and block the player’s path. 

Learning  By the end of this lesson, you will be able to: 


Objectives:  - Use GetComponent to manipulate the components of GameObjects 
- Influence physics of game objects with ForceMode.Impulse 
- Tweak the gravity of your project with Physics.gravity 
- Utilize new operators and variables like &&  
- Use Bool variables to control the number of times something can be done 
- Constrain the RigidBody component to halt movement on certain axes 
© Unity 2019 Lesson 3.1​ - Jump Force 

Step 1: Open prototype and change background 
The first thing we need to do is set up a new project, import the starter files, and choose a 
background for the game. 
1. Open ​Unity Hub​ and create a new “​Prototype 3​”  - New Concept:​ Sprites / Sprite 
project in your course directory   Renderer  
2. Click on the ​link​ to access the Prototype 3 starter  - Tip:​ Browse all of the Player and 
Background options before choosing 
files, then ​download and import​ them into Unity 
either - some work better with others 
3. Open the Prototype 3 scene and ​delete​ the ​Sample 
Scene​ without saving 
4. Select the ​Background object​ in the hierarchy, then 
in the ​Sprite Renderer​ ​component > Sprite, s
​ elect 
the​ _City, _Nature, or _Town image 

 
 
Step 2: Choose and set up a player character 
Now that we’ve started the project and chosen a background, we need to set up a character for 
the player to control. 
1. From ​Course Library > Characters​, ​Drag​ a  - Don’t worry:​ We will get the player and 
character into the hierarchy, ​rename​ i​ t​ “Player”,  the background moving soon  
then ​rotate it​ on the Y axis to face to the right  - Warning:​ Keep isTrigger UNCHECKED! 
- Tip:​ Use isometric view and the 
2. Add a ​Rigid Body​ component  
gizmos to cycle around and edit the 
3. Add a ​box collider​, then ​edit​ the collider bounds  collider with a clear perspective 
4. Create a new “​Scripts​” folder in Assets, create a 
“​PlayerController​” script inside, and ​attach​ it to the 
player 

© Unity 2019 Lesson 3.1​ - Jump Force 



Step 3: Make player jump at start 
Until now, we’ve only called methods on the entirety of a gameobject or the transform 
component. If we want more control over the force and gravity of the player, we need to call 
methods on the player’s Rigidbody component, specifically. 
1. In ​PlayerController.cs​, declare a new ​private  - New Function:​ GetComponent  
Rigidbody playerRb;​ variable  - Tip:​ The playerRb variable could apply 
2. In ​Start()​, initialize ​playerRb =  to anything, which is why we need to 
specify using GetComponent 
GetComponent<Rigidbody>(); 
3. In ​Start()​, use the AddForce method to make the 
player jump at the start of the game  

private​ Rigidbody playerRb;

void​ ​Start​()
{
​playerRb = GetComponent<Rigidbody>();
​playerRb.AddForce(Vector3.up * 1000);

 
 
Step 4: Make player jump if spacebar pressed 
We don’t want the player jumping at start - they should only jump when we tell it to by pressing 
spacebar. 
1. In ​Update()​ add an i​ f-then statement​ checking if  - Warning:​ Don’t worry about the slow 
the spacebar is pressed  jump double jump, or lack of 
2. Cut and paste​ the AddForce code from Start() into  animation, we will fix that later  
- Tip:​ Look at Unity documentation for 
the if-statement 
method overloads here 
3. Add the ​ForceMode.Impulse​ parameter to the  - New Function:​ ForceMode.Impulse 
AddForce​ call, then r​ educe ​force multiplier value  and optional parameters 

void​ ​Start​()
{
​playerRb = GetComponent<Rigidbody>();
​playerRb.AddForce(Vector3.up * 100);
}

void​ U ​ pdate​() {
​if​ (Input.GetKeyDown(KeyCode.Space)) {
​ ForceMode.Impulse​); }​ }
​playerRb.AddForce(Vector3.up * 10​0,

   

© Unity 2019 Lesson 3.1​ - Jump Force 



Step 5: Tweak the jump force and gravity 
We need to give the player a perfect jump by tweaking the force of the jump, the gravity of the 
scene, and the mass of the character. 
1. Replace​ the hardcoded value with a new p ​ ublic float  - New Function:​ the students about 
jumpForce​ variable  something  
2. Add a new ​public float gravityModifier​ variable and in  - Warning:​ Don’t make 
gravityModifier too high - the player 
Start()​, add ​Physics.gravity *= gravityModifier;  
could get stuck in the ground 
3. In the inspector, tweak the g ​ ravityModifer​,​ jumpForce​,  - New Concept:​ Times-equals 
and ​Rigidbody​ mass values to make it fun  operator *= 

private​ Rigidbody playerRb;


public​ ​float​ jumpForce;
public​ ​float​ gravityModifier;

void​ ​Start​() {
playerRb = GetComponent<Rigidbody>();
​Physics.gravity *= gravityModifier;​ }

void​ U​ pdate​() {
​if​ (Input.GetKeyDown(KeyCode.Space)) {
playerRb.AddForce(Vector3.up *​ ​10​ jumpForce​, ForceMode.Impulse); } } 
 
Step 6: Prevent player from double-jumping 
The player can spam the spacebar and send the character hurtling into the sky. In order to stop 
this, we need an if-statement that makes sure the player is grounded before they jump. 
1. Add a new​ public bool isOnGround ​variable and  - New Concept:​ Booleans  
set it equal to​ true  - New Concept:​ “And” operator (&&) 
2. In the if-statement making the player jump, set  - New Function:​ OnCollisionEnter 
- Tip:​ When assigning values, use one = 
isOnGround = false​, then ​test 
equal sign. When comparing values, 
3. Add a condition ​&& isOnGround​ to the  use == two equal signs 
if-statement 
4. Add a new ​void onCollisionEnter​ method, set 
isOnGround = true​ in that method, then ​test 

public​ ​bool​ isOnGround = ​true

void​ U ​ pdate​() {
​if​ (Input.GetKeyDown(KeyCode.Space)​ && isOnGround​) {
playerRb.AddForce(Vector3.up * 10 jumpForce, ForceMode.Impulse);
​isOnGround = ​false​;​ } }

private​ ​void​ ​OnCollisionEnter​(Collision collision) {


​isOnGround = ​true​; } 

© Unity 2019 Lesson 3.1​ - Jump Force 



Step 7: Make an obstacle and move it left 
We’ve got the player jumping in the air, but now they need something to jump over. We’re going 
to use some familiar code to instantiate obstacles and throw them in the player’s path. 
1. From ​Course Library > Obstacles​, add an obstacle,  - Warning:​ Be careful choosing your 
rename it “​Obstacle​”, and p​ osition​ it where it  obstacle in regards to the background. 
should spawn  Some obstacles may blend in, making 
it difficult for the player to see what 
2. Apply a ​Rigid Body​ and ​Box Collider​ component, 
they’re jumping over.  
then ​edit​ the collider bounds to fit the obstacle  - Tip:​ Notice that when you drag it into 
3. Create a new “​Prefabs​” folder and drag it in to  hierarchy, it gets placed at the spawn 
create a new ​Original Prefab  location 
4. Create a new “​MoveLeft​” script, ​apply​ it to the 
obstacle, and o ​ pen​ it 
5. In MoveLeft.cs, write the code to T ​ ranslate​ it to 
the left according to the speed variable 
6. Apply the MoveLeft script to the ​Background 

private​ ​float​ speed = 30;

void​ ​Update​() {
​transform.Translate(Vector3.left * Time.deltaTime * speed);

 
Step 8: Create a spawn manager 
Similar to the last project, we need to create an empty object Spawn Manager that will 
instantiate obstacle prefabs. 
1. Create a new “​Spawn Manager​” empty object, then  - Don’t worry:​ We’re just instantiating on 
apply a new ​SpawnManager.cs​ script to it  Start for now, we will have them 
2. In ​SpawnManager.cs​, declare a new ​public  repeating later 
- Tip:​ You’ve done this before! Feel free 
GameObject obstaclePrefab;​, then ​assign​ your 
to reference code from the last project 
prefab to the new variable in the inspector 
3. Declare a new ​private Vector3 spawnPos​ at your 
spawn location 
4. In ​Start()​, ​Instantiate​ a new obstacle prefab, then 
delete​ your prefab from the scene and test 

public​ GameObject obstaclePrefab;


private​ Vector3 spawnPos = ​new​ Vector3(25, 0, 0);

void​ ​Start​() {
​Instantiate(obstaclePrefab, spawnPos, obstaclePrefab.transform.rotation);​ } 

   
© Unity 2019 Lesson 3.1​ - Jump Force 

Step 9: Spawn obstacles at intervals 
Our spawn manager instantiates prefabs on start, but we must write a new function and utilize 
InvokeRepeating if it to spawn obstacles on a timer. Lastly, we must modify the character’s 
RigidBody so it can’t be knocked over. 
1. Create a new ​void SpawnObstacle​ method, then  - New Concept:​ RigidBody constraints 
move the ​Instantiate​ call inside it 
2. Create new ​float variables​ for s​ tartDelay​ ​and 
repeatRate 
3. Have your obstacles spawn on i​ ntervals​ using the 
InvokeRepeating()​ method 
4. In the Player RigidBody component, expand 
Constraints​, then ​Freeze​ all but the Y position 

​ loat​ startDelay = 2;
private​ f
private​ f​ loat​ repeatRate = 2;

void​ ​Start​() {
​InvokeRepeating(​"SpawnObstacle"​, startDelay, repeatRate);
​Instantiate(obstaclePrefab, spawnPos, obstaclePrefab.transform.rotation);​ }

void​ ​SpawnObstacle​ () {
​Instantiate(obstaclePrefab, spawnPos, obstaclePrefab.transform.rotation);​ } 
 
Lesson Recap 
New  ● Player jumps on spacebar press 
Functionality  ● Player cannot double-jump 
● Obstacles and Background move left 
● Obstacles spawn on intervals 

New Concepts  ● GetComponent 


and Skills  ● ForceMode.Impulse 
● Physics.Gravity 
● Rigidbody constraints 
● Rigidbody variables 
● Booleans 
● Multiply/Assign (“*) Operator 
● And (&&) Operator 
● OnCollisionEnter() 

Next Lesson  ● We’re going to fix that weird effect we created by moving the background 
left by having it actually constantly scroll using code! 
 

© Unity 2019 Lesson 3.1​ - Jump Force 

You might also like