Создаю игру на корабле, потому что я невероятно оригинален. Если не считать этого, у меня есть проблема. У меня есть функция для стрельбы из моего корабля в зависимости от его вращения, которая работает .. он использует этот код при создании:
var b = new Bullet ;
b.x = x;
b.y = y;
b.rotation = rotation;
parent.addChild(b);
bullets.push(b);
score -= 50;
trace(enemybullets[30].x + "," + enemybullets[30].y);
Приведенный выше код относится к моему классу кораблей, поэтому я могу легко добиться правильного вращения пуль.
И постоянно обновлять свою позицию в классе пули:
x += Math.cos(rotation / 180 * Math.PI) * speed;
y += Math.sin(rotation / 180 * Math.PI) * speed;
Так что все работает хорошо. Но у меня есть другой класс, EnemyBullet, который случайным образом генерирует и использует аналогичный код для установки направления и движения. В моем классе корабля:
var eb = new EnemyBullet ;
eb.x = (Math.random() * 550) - 550;
//trace("eb.x is " + eb.x)
eb.y = (Math.random() * 400) - 400;
//trace("eb.y is " + eb.y);
var a1 = eb.y - y;
var b1 = eb.x - x;
var radians1 = Math.atan2(a1,b1);
var degrees1 = radians1 / Math.PI / 180;
eb.rotation = degrees1;
if (enemybullets.length < 50)
{
parent.addChild(eb);
enemybullets.push(eb);
}
А в классе EnemyBullet:
x += Math.cos(rotation / 180 * Math.PI) * speed;
y += Math.sin(rotation / 180 * Math.PI) * speed;
Я установил трассировку, чтобы отслеживать, где движется одна из моих пуль, потому что они, конечно, не появляются на моем экране ... вот результаты моей трассировки:
x: 121.55, y:-162.05
x: 1197.05, y:-162.05
x: 1842.35, y:-162.05
x: 2368.15, y:-162.05
x: 2547.4, y:-162.05
x: 2702.75, y:-162.05
x: 2882, y:-162.05
Я понимаю, что вращение, следовательно, всегда горизонтальное, но я не могу понять, почему? Кто-нибудь может дать мне ответ? Предполагая, что это достаточно просто, потому что код, который я использовал для настройки поворота, - это тот же рабочий код, который я использовал для поворота фрагмента ролика по направлению к мыши.
Есть идеи?
Ta!