Я делаю космический шутер от первого лица, в котором лазеры начинают с экрана и стреляют в целевое местоположение. Работал над простым решением, чтобы сделать это без холста, и в настоящее время я получил это: https://jsfiddle.net/Ljhnqkf9/
Некоторое объяснение кода:
function adjustLine(x1,y1,x2,y2,lineId) //will rotate the laser properly before it's fired
$laser.animate( //this is the animation code where the laser is traveling to the target
{
left: targetX + ( targetW / 2 ),
top: targetY + (targetH / 2),
width: "0px"
},
complete: function() { //once the animation is completed, restore the laser at starting position (off-screen)
$laser.css({ left: "0px", top: "0px", width: "100px" });
$laserBtn.css({
textShadow:
"-1px -1px 0 #e5b13a, 1px -1px 0 #e5b13a, -1px 1px 0 #e5b13a, 1px 1px 0 #e5b13a"
});
}
Как вы можете видите, я использую плагин jquery .ui для анимации лазера, мне нравится результат, но теперь, когда я думаю о добавлении нескольких лазеров (например, 10 или более), я застрял в том, как сделать это правильно. Я думал о том, чтобы сохранить лазеры в массиве и затем нарисовать их в al oop, основываясь на текущем корабельном оружии, но он всегда терпит неудачу в части $ laser.animation () по какой-то причине, он не хочет принимать массив или может я что то не так сделал. Идея состоит в том, чтобы одновременно запустить 10 лазеров, все они выходят из разных мест вне экрана и заканчиваются в середине цели, как показано в примере.