im Использование холста для визуализации маленькой моей игры. В основном у меня есть два объекта, представляющих космические корабли, каждый из которых имеет массив «Местоположение», в котором хранятся текущие корабли x/y. В соответствии с этими массивами я рисую изображение на холсте (totalw/h 300/300 fyi).Сравнение x/y двух позиций на холсте
Теперь, для трудной части. Я хочу нарисовать анимацию (стрельбу) на этом холсте. в основном от ship1 x/y до ship2 x/y.
Для самой анимационной функции im, передающей объект эффектов, который содержит 3 массива, shooter.location [x, y], target.location [x, y] и третий массив, который содержит место, где EFFECT в настоящее время находится в [ x, y].
this.animateEffects = function(effects){
var shooter = effects.shooter;
var target = effects.target;
var current = effects.current;
var canvas = document.getElementById("effects");
var context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
context.beginPath();
context.fillStyle = "red";
context.arc(current[0], current[1], 5, 0, 2*Math.PI);
effects.current[0]++
effects.current[1]++
context.fill();
if (current == target){
console.log("ding");
this.end()
}
}
Моей «проблема» в том, что им, если вообще возможно, ищет умный способ определения (для каждого кадра), если эффекты [х, у] должны идти ++ или - или сочетание два, в зависимости от того, где расположены «движущиеся» корабли (в то время начались съемки).
Любые советы или подсказки.
Я f Я не ошибаюсь, вы хотите, чтобы «эффекты» следовали за движущимися кораблями? – Xlander
Нет. Корабли статичны в точке огня. Игрок A перемещается, игрок B перемещается. Игрок A совершает корабли на кораблях Игрока B и наоборот. –
А, ок. Затем вы должны сохранить позицию целевого корабля в момент стрельбы в переменной ('var shootLocation'). Затем проверьте положение эффекта на 'shootLocation'. 'if (effect.x> shootLocation.x) {// -} else {// ++}' – Xlander