2

プレイヤー エンティティをマウスに合わせて回転させようとしましたが、MouseMove イベントをトリガーできません。

Crafty.e("2D, Mouse, Canvas, Color"
   .attr({ w:1000, h:1000, x:0, y:0 })
   .bind('MouseMove', function(e)
   {
         console.log("Mouse Pos:"+ e.x +","+e.y);
        //get hero
         var pos1 = {
           x: e.x,
           y: e.y
         }
         var pos2 = {
           x: player.x,
           y: player.y
         }
         player.rotation = 0;
         player.rotation = -Engine.degree(pos1, pos2);


     })

MouseMove をクリックまたはマウスダウンまたはその他のマウスイベントに置き換えると、そのイベントが発生したときにマウスに回転します。ただし、mousemove 関数を呼び出すことはありません。私は何を間違っていますか?

4

1 に答える 1

1

コミュニティによって作成された Crafty コンポーネントであるCraftyMouseFaceをご覧ください。

このコンポーネントは次のことを行います。

  • 指定されたスプライトとマウスの位置の間の角度を検出し、現在のマウスの位置と計算された角度 (ラジアンと度) に関する情報を保持する Crafty イベントをトリガーします。
  • スプライトの向きを決定します。
  • ゲーム画面の任意の場所でマウス ボタンを押したり離したりすると、Crafty イベントがトリガーされます。

最初の機能は、必要なもののように聞こえます。

MouseMovedイベントとそのイベント データをテストするために、次のスニペットに入れましょう。
マウス ポインターを移動すると、緑色の四角形が回転してポインターの方を向くようになります。

Crafty.init();

Crafty.e("2D, DOM, Color, MouseFace")
    .attr({x: 75, y: 75, w: 60, h: 60})
    .origin("center")
    .color('green')
    .bind("MouseMoved", function(data) {
        this.rotation = data.rad * 180 / Math.PI;
    });
<script src="https://github.com/craftyjs/Crafty/releases/download/0.7.1/crafty-min.js"></script>
<script src="https://cdn.rawgit.com/petarov/CraftyMouseFace/master/src/craftyMFace.js"></script>

于 2016-04-16T23:12:44.880 に答える