Theme
SD MILIEU

2017-11-12

[JavaScript] JS関係で最近知ったこと

PixiJSを使用して簡単な縦シューティングゲームを作ってみようと思い JS を書いていたら、色々と便利な物を見つけたのでメモ。

オブジェクトをマージするObject.assign

jQuery の$.extendと同様にオブジェクトをマージしてくれる。

以下のように、引数としてオプションを受け取るようなパターンでデフォルト値とマージする時に役立つ。

class Bullet {
  constructor(inOption) {
    this.option = {
      position: {
        x: 0,
        y: 0,
      },
      spd: 0,
      rotation: 0,
    };

    Object.assign(this.option, inOption);
  }
}

const bullet = new Bullet({
  spd: 10,
});

console.log(bullet);
/*
Bullet { option: { position: { x: 0, y: 0 }, spd: 10, rotation: 0 } }
*/

ベクトルからラジアンを返却してくれるMath.atan2

Math.atanの場合は返却値が-PI/2からPI/2のため、それ以外のパターンに関しては結構面倒くさい条件分岐を書かなければならなかった。

Math.atan2の場合は-PIからPIを返却してくれるので、Math.atanのように条件分岐を書く必要が無いので非常に楽。

注意しなければならないのはMath.atan2(y, x)というように、引数が(y, x)の順番な点。何も考えずに書くと絶対に x 座標を先に書いてしまう。