I have to use math? I am out of here… Telerik School Academy Unity 2D Game Development.

Slides:



Advertisements
Similar presentations
Creating Vector Graphics in the Web Learning & Development Telerik Software Academy.
Advertisements

Redundant Array of Independent Disks Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Writing HTML made easier Telerik School Academy HTML, CSS and JavaScript.
Inside Windows Boot Process Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Nikolay Kostov Telerik Software Academy academy.telerik.com Technical Trainer About the Course.
Guidelines to Preparing and Delivering an Elevator Pitch Presentation Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training.
Two basic algorithms for path searching in a graph Telerik Algo Academy Graph Algorithms.
About the Course Telerik Software Academy CSS Styling.
Binary, Decimal and Hexadecimal Numbers Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Telerik Software Academy Hybrid Mobile Applications.
Welcome to the JSON-stores world Learning & Development Telerik Software Academy.
Course Content, Evaluation, Exams Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Eclipse + Android SDK, VS + Windows Phone SDK Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Twitter Bootstrap Telerik Software Academy
Things you need to know George Georgiev Technical Trainer GeorgeAtanasov George Atanasov Front-End Developer.
Software Company Structure, Product Management, Marketing, Sales, Business Strategy and More Margarita Antonova Volunteer Telerik Academy academy.telerik.com.
Hamiltonian Cycle Penka Borukova Student at Telerik Academy.
Group Policy Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Reverse polish notation, Operations with big numbers Ivelin Rachev Telerik Corporation “Baba Tonka” High School of Mathematics.
April, Sofia, Telerik Software Academy Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Telerik Software Academy ASP.NET MVC.
Sales Processes, Sales Cycle and the Sales Force Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System Analyst Telerik.
Design Patterns that ease the design by identifying a simple way to realize relationships between entities. Antony Jekov Telerik Software Academy academy.telerik.com.
Using KendoUI for SPA Applications Learning & Development Telerik School Academy.
The way to create cross-platform apps Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
PEST Analysis, Porter’s 5 Forces and Sustainability Strategies Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System.
Searching for a Job, Writing CV and Cover Letter, Passing a Job Interview Telerik Academy for Software Engineers October 6 th 2012 – Sofia academy.telerik.com.
Drive Partitioning Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Telerik Software Academy Mobile apps for iPhone & iPad.
Google APIs and Facebook API Ivaylo Kenov Penka Borukova Telerik Corporation Telerik Academy Students.
The magic of virtual machines Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
What it is, and does it work Learning & Development Telerik School Academy.
Device APIs with Xamarin
Telerik Software Academy Mobile apps for iPhone & iPad.
Academy.telerik.com Class of , Fall 2013.
Telerik Software Academy Databases.
Google APIs and Facebook API Ivaylo Kenov Penka Borukova Telerik Corporation Telerik Academy Students.
Telerik Software Academy ASP.NET Web Forms.
What are WinJS and WinRT, Using the APIs in JavaScript George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer itgeorge.net.
JavaScript Modules and Patterns Telerik Software Academy
The True power of dynamic web pages Learning & Development Team Telerik Software Academy.
Approximate string matching Evlogi Hristov Telerik Corporation Student at Telerik Academy.
Xamarin with SQLite Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Ivaylo Kenov Telerik Software Academy Technical Assistant.
Developing "evil" JavaScript applications Learning & Development Telerik School Academy.
The PhoneGap History Doncho Minkov Telerik Software Academy Technical Trainer
Building Rock-Solid Software Svetlin Nakov Telerik Software Academy Manager Technical Training
Adobe® Photoshop® CS6 Essentials
Cultivating Professionals for Your Company The Success Story of Telerik Svetlin Nakov, PhD Manager Technical Training Telerik Corp.
Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
AJAX with ASP.NET MVC Telerik Software Academy
Nencho Nenchev Doroteya Agayna Telerik Software Academy Telerik Support Leads.
Installation, Sample Usage, Strings and OOP Telerik Software Academy Software Quality Assurance.
In JavaScript Learning & Development Telerik Software Academy.
Services in AngularJS Telerik Software Academy
Svetlin Nakov Telerik Software Academy Manager Technical Training
What is Roslyn and how can we use it? Telerik Academy Plus C# 6.0 and Roslyn Seminar.
Splitting JavaScript into Dependent Modules Learning & Development Telerik Software Academy.
Changing the default visualization of views in Xamarin.Forms Telerik School Academy Xamarin apps for iOS, Android & WinPhone.
Telerik Software Academy HTML5.
What to expect from the new IDE Telerik Academy Plus Visual Studio 2015 and ASP.NET 5.
Hristian Hristov Telerik Corporation
Monitoring Server Performance Organizing Your Support Model Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Automating Windows Deployment Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Server Roles and Features Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
Binary, Decimal and Hexadecimal Numbers Telerik Software Academy C# Fundamentals – Part 2.
Nikolay Kostov Telerik Software Academy academy.telerik.com Team Lead, Senior Developer and Trainer
Adding UI and Audio element Telerik Academy Plus Unity 2D Game Development.
Dimo Dimov Support Lead, Kendo UI Telerik Telerik Software Academy
Basic Math in 2D Game Development
Presentation transcript:

I have to use math? I am out of here… Telerik School Academy Unity 2D Game Development

1. Introduction to Linear Algebra 2. Vectors 1.What is a Vector? 2.Adding, Subtracting 3.Scalar Multiplication 4.Length, Distance 5.Dot Product 3. Quaternions 4. Other helpful functions 2

But… I thought math is for kids!

 Why should I care?  Linear Algebra is the study of vectors Linear Algebra Linear Algebra  Vectors are really helpful in game development  2D or 3D  Used for positions, directions and velocity in Cartesian coordinate system Cartesian coordinate system Cartesian coordinate system  The better you understand linear algebra, the better your games! Deal with it!  The better you understand linear algebra, the better your games! Deal with it! *NOTE: images and information taken from: / / 4

 What is a Vector?  A vector is just a set of numbers  (2, -3) or (2,5,-1) or (1, 0)  Doesn't give much information without context  In games – position, direction or velocity  It is important to keep track of your units! 5

 How to create vectors in Unity with C#? 6 using UnityEngine; … Vector2 position2D = new Vector2(2.5f, 3.8f); // 2D vector Vector2 direction2D = new Vector2(0, 1); // another one Vector2 zero = Vector2.zero; // (0, 0) Vector2 one = Vector2.one; // (1, 1) Vector2 right = Vector2.right; // (1, 0) Vector2 left = -Vector2.right; // (-1, 0) Vector2 up = Vector2.up; // (0, 1) Vector2 down = -Vector2.up; // (0, -1) Vector3 position3D = new Vector3(1, 2, 3); // 3D vector

 How to add vectors?  Just add each component  (1, 2, 3) + (3, 4, 5) = (1+3, 2 + 4, 3 + 5) = (4, 6, 8)  Commonly used in game's physics  Example:  Velocity – (1, 3)  Gravity – (0, -1) 7 var one = new Vector2(2.5f, 3.8f); var two = new Vector2(-2, 5.2f); var result = one + two; // (0.5, 9)

 How to subtract vectors?  Just subtract each component  (4, 3, 1) - (5, 8, 0) = (4 - 5, 3 - 8, 1 - 0) = (-1, 6, 8)  Commonly used when you need to get a vector that points from one position to another  Example:  Player – (1, 2)  Enemy – (4, 3) 8 var one = new Vector2(2.5f, 3.8f); var two = new Vector2(-2, 5.2f); var result = one - two; // (4.5, -1.4)

 How to multiply a vector by scalar?  Scalars are just individual numbers: 5, 6, -3  Just multiply each component by the scalar  0.7 * (10, 20) = (0.7 * 10, 0.7 * 20) = (7, 14)  Example:  Player's velocity on ground – (5, 0)  Player's velocity in water – 0.7 * (5, 0) 9 var velocity = new Vector2(5, 0); var waterFactor = 0.7f; var waterVelocity = velocity * waterFactor; // (3.5, 0)

 How to find the length (magnitude) of a vector?  Written with |V| - length of vector V  Calculated with Pythagorean theorem Pythagorean theoremPythagorean theorem  Example – (4, 3)  |V| = sqrt(4 2, 3 2 ) = 5 10 var velocity = new Vector2(4, 3); var length = velocity.magnitude; // 5 // use velocity.sqrMagnitude for comparison

 How to find the distance between two vectors?  Just subtract the vectors and find the length of the result vector  Distance = |(4, 3) – (3,1)| = |(3,1) – (4,3)| = |(1,2)| = sqrt( ) = sqrt(5) = var first = new Vector2(1, 2); var second = new Vector2(3, 3); var distance = Vector2.Distance(first, second); // 2.23 second); // 2.23

 What is normalization?  Making a vector's to have length of 1  Commonly used with directions  How to normalize a vector?  Just divide each component by the vector's length  (3, 4) => (3/5, 4/5) = (0.6, 0.8) 12 var position = new Vector2(3, 4); var normalizedVector = position.normalized;

 How to calculate dot product of two vectors?  First multiply the components and then add the results  (a 1,a 2 )(b 1,b 2 ) = a 1 b 1 + a 2 b 2  Example:  (3,2)(1,4) = 3*1 + 2*4 = var position = new Vector2(3, 4); var direction = new Vector2(1, 0); var dotProduct = Vector2.Dot(position, direction);

 Ok, but why dot product is useful?  Example:  Hero at (3, 0)  Guard at (1, 1) facing (1, 1) direction and has 180 field of view  Guard at (1, 1) facing (1, 1) direction and has 180º field of view  Is the guard seeing our hero?  Solution:  Find the vector between the two:  V = H – G = (2, -1)  Find the dot product between V and D  DV = (1, 1)(2, -1) = 2 – 1 = 1  1 is positive => the guard sees our hero! 14

 Dot product shows the extend to which two vectors are pointing in the same direction  But to what extend? What is the angle?  The exact rotation is:  AB = |A||B|cos(θ)  We can solve that for θ  θ = acos((AB)/(|A||B|))  If we normalize A and B:  θ = acos(AB) 15 var position = new Vector2(3, 4); var direction = new Vector2(1, 0); var angle = Vector2.Angle(position, direction);

Here comes the bad guy!

 What is Quaternion? Quaternion  Used to represent rotations  They use complex numbers and are quite hard to understand right away  Luckily most often we would not use them (Unity does all the heavy lifting)  Quaternion.Euler – rotate by Euler rotation  Quaternion.Slerp – interpolate rotations  Quaternion.identity – rotation origin  Quaternion.Angle – angle between two rotations 17

Math? Again? Come on!

 Mathf is helper class provided by Unity Mathf  Like System.Math in.NET but extended and with full floating point numbers support System.Math  Besides the normal Sin, Abs, etc. members:  Deg2Rad and Rad2Deg  Clamp and Clamp01  Lerp and LerpAngle  ClosestPowerOfTwo 19

 The random generator is also enhanced  It is the static class Random  Range - random floating point number between min and max (max is exclusive)  value - random number between 0.0 and 1.0  rotation - random rotation  There are more but these are the most useful 20

 Linear Algebra  Vectors – used for game math  Properties of vectors – length, distance  Operations with vectors – adding, subtracting  Quaternions – used for rotation  Mathf – helper class for math  Random – helper class for random numbers 21

форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране

 C# Telerik Academy  csharpfundamentals.telerik.com csharpfundamentals.telerik.com  Telerik Software Academy  academy.telerik.com academy.telerik.com  Telerik Facebook  facebook.com/TelerikAcademy facebook.com/TelerikAcademy  Telerik Software Academy Forums  forums.academy.telerik.com forums.academy.telerik.com