2016-10-08 22 views
0

私はその回転に基づいてオブジェクトを移動しようとしています、と私は4つの方法があります:前方移動オブジェクト

  • アップダウン
  • 後方
  • 4つの方法のうち、forwardbackwardだけが正しく動作しているようです。他の2つは、回転に基づいて異なる効果を有するように見える。 90度回転に設定すると、forwardと同じ動作をしますが(実際にはこの回転で画面が下になります)、実際には右に動かすことが望ましい影響です。

    Rotation Image

    これらの2つの方法が適切に動作しているように見える:

    public get forward(): Vector2 { 
        return new Vector2(
         Math.cos(this.rotation.degrees * (Math.PI/180)), 
         Math.sin(this.rotation.degrees * (Math.PI/180)) 
        ); 
    } 
    
    public get backward(): Vector2 { 
        return new Vector2(
         -Math.cos(this.rotation.degrees * (Math.PI/180)), 
         -Math.sin(this.rotation.degrees * (Math.PI/180)) 
        ); 
    } 
    

    これら二つは、しかし、正常に動作していません。私はこれを引き起こしていることを理解できないようだが、私はそれが似ていると思った。

    public get up(): Vector2 { 
        return new Vector2(
         Math.cos(this.rotation.degrees * (Math.PI/180)), 
         -Math.sin(this.rotation.degrees * (Math.PI/180)) 
        ); 
    } 
    
    public get down(): Vector2 { 
        return new Vector2(
         -Math.cos(this.rotation.degrees * (Math.PI/180)), 
         Math.sin(this.rotation.degrees * (Math.PI/180)) 
        ); 
    } 
    
  • +0

    this.rotation.degreesあなたに正しい度を与えていますか? – Aschab

    +0

    ええ、それは設定値ですので、それは(最後のparam)のように作成されます: 'インスタンス化(Guy、Stage.topLeftQuad、新しい回転(90));' –

    答えて

    1

    あなたはそれをこのように計算する必要があります:upforwardから+90度であり、downforwardから-90度である(とbackwardforwardからちょうど180度です)。言い換えれば

    public get up(): Vector2 { 
        const phi = (this.rotation.degrees + 90) * (Math.PI/180); 
        return new Vector2(
         Math.cos(phi), 
         Math.sin(phi) 
        ); 
    } 
    

    が他なしcos/sinを否定は明らかに間違っています。たとえば、ちょうど-cosは、単に「x軸で反対方向に移動し、y軸速度を同じに保つ」ことを意味します。たとえば、forwardが北東北を指す場合は、北北西に向かうベクトルを作成します。

    +0

    これは動作するようです。私はキャンバスを使用しているので、 '-90'を実行するように見えます。正しい方向に動かすのは正しい方法ですか? –

    +0

    はい、自分の座標系で 'up'と' down'を定義する方法に応じて '+ 90' /' -90'を反転する必要があるかもしれません –

    1

    一度主方向のCoSと罪を計算する場合には、ベクトル成分は以下のとおりです。

    forward:   cos, sin 
    backward:   -cos, -sin 
    up(really left): -sin, cos 
    down(really right): sin, -cos 
    
    関連する問題