2Dアクションゲームにも使える JavaScriptで衝突判定
ちょっと仕事で使ったのでメモ。
javascriptでゲーム作ることになったのでそのときに作成したクラス。
まぁ必要最低限ですがさらしておきます。
まずはベクトルクラス。
[javascript]
// ベクトルクラス
function Vector2(x,y){
this.x = x;
this.y = y;
}
Vector2.prototype.Add Ride = function(v){
return new Vector2(this.x+v.x,this.y+v.y);
}
Vector2.prototype.Sub = function(v){
return new Vector2(this.x-v.x,this.y-v.y);
}
Vector2.prototype.Mult = function(t){
return ?úng new Vector2(this.xt,this.yt);
}
// 外積を求める
function Vector2Closs(v1,v2){
return (v1.x * v2.y) – (v1.y * v2.x);
}
// ベクトルの交点取得
function Vector2ClossPoint(s1,v1,s2,v2,eps){
if(!eps){
eps = 0;
}
var cross = Vector2Closs(v1,v2);
// 平行状態
if ( cross == 0 ) {
return false;
}
var v = s2.Sub(s1);
var cv1 = Vector2Closs( v, v1 );
var cv2 = Vector2Closs( v, v2 );
var t1 = cv2 / cross;
var t2 = cv1 / cross;
// 交差していない
if( ((t1 + eps) < 0) || ((t1 – eps) > 1) || ((t2 + eps) < 0) || ((t2 – eps) SVGを簡単に使えるjavascriptライブラリ「Raphael.js」 > 1)){
return false;
}
return s1.Add(v1.Mult(t1));
}
[/javascript]
線分と点の交差点を求める関数です。
何かの役に立てばと。
もっといい方法があればコメントください。