Enjoy an ad free experience by logging in. Not a member yet? Register.

Results 1 to 1 of 1

04222013, 08:28 PM #1
 Join Date
 Dec 2012
 Location
 Ingerlund
 Posts
 66
 Thanks
 8
 Thanked 4 Times in 4 Posts
Looking for a little help understand collision, specifically 2d vectors
Hi Guys
So, I'm making a 2d game engine just to help myself learn a little JavaScript. It was all going great until I started getting into collision detection and the tutorials went into 2d vectors but didn't explain why they were needed in a wider context. Personally, I'm assuming it's because they would want to calculate the last position of an object and the direction of travel or maybe the angle of approach for post hit calculations that might need to be done (for example, a bullet ricochet?). I also need a little help in understanding exactly what this function is doing, as there are many parts to it that I am not familiar with. So, here's the vector function:
Code:vector2=function(x,y){ this.x=0; this.y=0; if (x != null) this.x=x; if (y != null) this.y=y; this.previousX= 0; this.previousY= 0; this.set = function(x,y){ if (x == null && y == null){ console.log("no x or y has been passed to vector2s set function") }else{ this.previousX=this.x; this.previousY=this.y; if (x !=null){ this.x=x } if (y !=null){ this.y=y } } }; this.normalize = function(){ var tmp = new vector2(this.x, this.y); var mag = Math.sqrt((tmp.x*tmp.x) + (tmp.y*tmp.y)); tmp.x = tmp.x /mag; tmp.y = tmp.y /mag; return tmp; }; this.distance = function(vec2){ if(vec2 !=null) return Math.sqrt(((vec2.xthis.x) * (vec2.x  this.x)) + ((this.yvec2.y) * (this.y  vec2.y))); else return Math.sqrt(((this.previousX  this.x) * (this.previousX  this.x)) + ((this.previousY  this.y) * (this.previousY  this.y))); }; this.hasChanged = function(){ if (this.x != this.previousX  this.y != this.previousY) return true; return false; }; this.difference = function(vec2){ var inv = 1; if (invert) inv = 1; if(vec2 == null){ return new vector2((this.x = this.previousX) * inv, (this.y  this.previousY) * inv); }else return new vector2((this.x  vec2.x) * inv, (this.y  vec2.y) * inv); }; };
So, broadly what I want to know is:
 Why are vectors useful in 2d games and what would the alternative be to using them?
 What do the other parts of the function do (set, normalise, distance, hasChanged, difference)?
 Why isn't it possible to just tell my player object not to move if he intersects an object? Why complicate things with vectors?
So thanks ahead of time as always and please go easy on me as I realize some of you may see this as a noob question about basic geometry!