HTML5 Game Physics Velocity

HTML5 Game Physics Position And Velocity

This tutorial is the first in a series about HTML5 game physics. The HTML5 canvas element will act as a stage for all game characters. JavaScript will be used for game logic and updating canvas items.

The first tutorial will draw a simple rectangle that will act as a game character. The character will move horizontally across the canvas. The code is based on an article by Hunter Loftis for Skookum Digital Works titled “Physics for Lazy Game Developers”.

This series is intermediate and assumes basic knowledge of physics and 2D graphics. The character position is determined by static velocity multiplied by displacement that is calculated every frame loop. 2D graphics require separate x and y velocities.

This tutorial uses the HTML5 canvas tag and JavaScript.

    Tools are required:

  • Text editor.
  • Folder for web server.
  • Browser to view output.

HTML5 Game Physics Position & Velocity File

<!--
   HTML5_Game_Physics_Position_And_Velocity.html
   
   Copyright 2013 edward <http://Ojambo.com>
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.
   
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
   MA 02110-1301, USA.
   
   
-->


<!DOCTYPE html>
<html xml:lang="en" lang="en">

<head>
	<title>Ojambo.com HTML5 Game Physics Position And Velocity</title>
	<meta charset="utf-8" />
	<link rel="stylesheet" type="text/css" href="style.css">
	<style type="text/css">
		canvas#myCanvas {
			width: 80%;
			height: 80%;
			background: green;
			}
	
	</style>
</head>

<body>
	<p>Canvas Character Position & Velocity</p>
	<canvas id="myCanvas"></canvas>
		<script type="text/JavaScript">
		// Position, Size & Velocity
		var rect = {
			x: 0,
			y: 0,
			w: 20,
			h: 20,
			vx: 1,
			vy: 0
		};
					
		// Find <canvas> element
		myCanvas=document.getElementById("myCanvas");
		// Call getContext() method and pass 2d string
		ctx=myCanvas.getContext("2d");		
		
		// Update Every 20 milliseconds
		setInterval(function(){ draw();},20);	
		
		function draw() {			
			// Clear display
			ctx.save();
			ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);
			ctx.restore();
			
			// Apply velocity to position (vx -> x)
			rect.x += rect.vx;
			rect.y += rect.vy;
			
			// Draw onto the canvas
			ctx.save();
			// Fill style red <CSS color, a gradient, or a pattern>
			ctx.fillStyle="#FF0000";
			// Rectangle fillRect(x,y,width,height)
			ctx.fillRect(rect.x,rect.y,rect.w,rect.h);
			ctx.restore();
		}
	</script>
</body>

</html>

The canvas element is styled with CSS in order to determine observe the character position. The canvas object is found by its unique identifier in JavaScript. The character parameters for x and y position, width and height, and x and y velocity are stored in a JSON object called “rect”.

2D drawing for the canvas is enabled using the “getContext” method. The “setInterval” method updates the canvas every 20 seconds. The draw function clears the canvas, updates the character position via the velocity x value, and redraws the character.

How to Use:

    Open Browser

  • Observe the canvas.
  • Observe the character moving across the canvas.

Demonstration:

Ojambo.com HTML5 Game Physics Velocity Tutorial

Image Missing
Ojambo.com HTML5 Game Physics Position & Velocity

Conclusion:

HTML5 game development requires the use of the canvas element. JavaScript is used to create canvas characters and program the game logic.

A unique identifier can be used in order to target the specific canvas element. Character movement can be based on game physics created using JavaScript.

    Recommendations:

  1. Style the canvas using CSS.
  2. Hold all character parameters in a JSON object.
  3. Use a unique identifiers to target the canvas element.

About Edward

Edward is a software engineer, web developer, and author dedicated to helping people achieve their personal and professional goals through actionable advice and real-world tools.

As the author of impactful books including Learning JavaScript, Learning Python, Learning PHP and Mastering Blender Python API, Edward writes with a focus on personal growth, entrepreneurship, and practical success strategies. His work is designed to guide, motivate, and empower.

In addition to writing, Edward offers professional "full-stack development," "database design," "1-on-1 tutoring," "consulting sessions,", tailored to help you take the next step. Whether you are launching a business, developing a brand, or leveling up your mindset, Edward will be there to support you.

Edward also offers online courses designed to deepen your learning and accelerate your progress. Explore the programming on languages like JavaScript, Python and PHP to find the perfect fit for your journey.

📖 Explore His Books – Visit the Book Shop to grab your copies today.
💼 Need Support? – Learn more about Services and the ways to benefit from his expertise.
🎓 Ready to Learn? – Check out his Online Courses to turn your ideas into results.