我正在使用 Javascript、Canvas 和 KineticJS 制作一个小练习脚本,我想在其中向鼠标光标射击一些子弹。
唯一的问题是我真的找不到让子弹直接射向我的鼠标的方法。它似乎总是对角线而不是直接指向我的鼠标。现在我知道我的代码不是现在。我只是想问我如何才能让我的对象移动到我的鼠标而不是对角线。
我试过将 X 和 Y 分开设置。但这使它首先对角线跳跃,最后几个像素跳到正确的 X,这显然是不正确的。
这是一个小提琴(子弹功能在第166行):http: //jsfiddle.net/eRQ3P/(注意:子弹现在没有处理;所以它会在几颗子弹后滞后!)(注2:射击到左上角,看看子弹是怎么飞的)
尽管如此; 这是我的项目符号函数,它获取目标 X 和 Y(它是鼠标 X 和 Y 的 X 和 Y 单击时)
function Bullet(destinationX, destinationY) {
this.x = sprite.getX()+(sprite.getWidth()/2);
this.y = sprite.getY()+(sprite.getHeight()/2);
this.destinationX = destinationX;
this.destinationY = destinationY;
this.finished = false;
this.projectile = new Kinetic.Circle({
x: this.x,
y: this.y,
radius: 5,
fill: 'pink',
name: 'projectile'
});
this.draw = function(index) {
var mayDelete = true;
if (this.headingY == 'north') {
if (this.projectile.getY() > this.destinationY) {
this.projectile.setAbsolutePosition(this.projectile.getX() - (2*speed), this.projectile.getY() - (2*speed));
//this.projectile.setX(this.projectile.getX() - (2*speed));
mayDelete = false;
}
}
if (mayDelete == true) {
this.projectile.remove();
bullets.splice(index, 1);
}
ammoLayer.draw();
}
}