player.bind('Move', function(from) {
if(this.hit('Tree')){
player.x = from._x
player.y = from._y
// Here player.x and player.y have right value but not renderered here.
}
}
)
我调试程序在此处输入,并且from._x和from._y具有良好的价值。 但是玩家仍然在树的“后面”。
答案 0 :(得分:0)
我还没有太多的CraftyJS经验,所以不要以此为最佳方式,但是...
我在API文档中找到了一些参考文献:
这里是一个例子-当标记有“玩家”组件的实体与任何标记为“树”的组件发生碰撞时,都会将玩家对象的x位置向后退,直到其与树重叠的量。
<html>
<body>
<div id="game"></div>
<script type="text/javascript" src="https://rawgithub.com/craftyjs/Crafty/release/dist/crafty-min.js"></script>
<script>
Crafty.init(640,100, document.getElementById('game'));
Crafty.e('2D, Canvas, Color, Twoway, Player, Collision')
.attr({x: 0, y: 50, w: 50, h: 50})
.color('#00F')
.twoway(400)
.onHit('Tree', function(hitDatas) {
hitData = hitDatas[0];
this.x -= hitData.overlap * hitData.nx;
});
Crafty.e('2D, Canvas, Color, Tree, Collision')
.attr({x: 300, y:0, w: 40, h: 100})
.color('#873');
</script>
</body>
</html>