我有一个球和一个杆(用于台球游戏)。
首先将球放置在桌子上的一个位置。点击球后,杆出现了,这样我们可以确定杆的角度,通过单击球来确定鼠标相对于球心的角度,并将杆放置在那个角度接触球。
现在杆也在桌子上。现在我只沿着那个角度拖动杆,如果以另一个角度拖动,则返回false。
在拖动结束时,我计算了杆移动的距离,然后杆返回到接触球的初始位置。然后,我尝试根据杆的角度和杆移动的距离移动球。
球在这里移动,但不是根据任何这些移动的。这已经成为我的问题,我已经更新了fiddle here:
strikerGroup.on('dragend', function () {
var strikerLastPos = strikerGroup.getAbsolutePosition();
strikerGroup.setPosition(initStrikerGrpX, initStrikerGrpY);
striker.speedX = striker.speedY = 2;
var strikerGrpDistMoved = Math.sqrt(((strikerLastPos.x - strikerGroup.getAbsolutePosition().x) * (strikerLastPos.x - strikerGroup.getAbsolutePosition().x)) + ((strikerLastPos.y - strikerGroup.getAbsolutePosition().y) * (strikerLastPos.y - strikerGroup.getAbsolutePosition().y)));
var newX = striker.getX() + (Math.cos(theta) * strikerGrpDistMoved);
var newY = striker.getY() - (Math.sin(theta) * strikerGrpDistMoved);
var strikerMove = new Kinetic.Tween({
node: striker,
duration: 5,
x: newX,
y: newY,
easing: Kinetic.Easings.EaseInOut
});
console.log(striker.getX());
strikerMove.play();
layer.batchDraw();
// strikerGroup striked the striker!!!!
});