我一直试图让我的玩家实体旋转到鼠标但是我无法触发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);
})
当我使用click或mousedown或任何其他鼠标事件替换MouseMove时,它会在该事件发生时旋转到鼠标。但它永远不会调用mousemove函数。我做错了什么?
答案 0 :(得分:0)
查看CraftyMouseFace,一个狡猾的组件made by the community:
此组件执行以下操作:
- 它找到给定Sprite和鼠标位置之间的角度,并触发一个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>