Просмотр полной версии : Перемещение снаряда танковой пушки
Alexey25
28.05.2016, 13:54
Пытаюсь создать перемещение снаряда танковой пушки. Вот код:
function init()
{
_root.onEnterFrame = function()
{
xdiff = _xmouse - tank._x;
ydiff = _ymouse - tank._y;
angle = Math.atan2(ydiff, xdiff);
angle = 0 - tank._rotation + angle * 180 / Math.PI;
tank.gun._rotation = angle;
}
onMouseDown = function ()
{
X = _xmouse - tank._x;
Y = _ymouse - tank._y;
ang = Math.atan2(Y, X);
var __reg3 = attachMovie("bullet", "bullet" + counter_bullet++, _root.getNextHighestDepth());
__reg3._x = tank._x + Math.cos(ang) * 80;
__reg3._y = tank._y + Math.sin(ang) * 80;
}
}
init();
Сама пушка выглядит вот так
32209
Это рабочий код хотя он не полностью.
Я решил перенести свою пушку и переделал рисунок и вот, что получилось.
32210
Но снаряд по прежнему появляется по центру как показано но рисунке выше. Подскажите пожалуйста Как перенести снаряд так чтобы он появлялся около новой пушки. При том при всем, что нужно учитывать, что пушка поворачивается?
Речь о пушке или о стволе оной?
Используйте координаты ствола для bullet....
И кстати, вам удобно такие переменные юзать - "__reg3" ? ;)
undefined
28.05.2016, 16:03
похоже это творчество декомпилятора)
Alexey25
28.05.2016, 16:57
Раньше пользовался декомпилятором, а привычка использовать переменные таким образом осталась.
Добавлено через 42 минуты
Получилось, но при перемещении сцены снаряды появляются не там где надо, стоит только перемещение сцены убрать и все работает. Без перемещение сцены никак не обойтись. Кто что посоветует? Был создан новый мувиклип под названием fire. Он находится около дула пушки и отвечает за создания пуль. Вот код:
function init()
{
_root.onEnterFrame = function()
{
//Перемещение сцены
this._x = -tank._x + Stage.width / 2;
this._y = -tank._y + Stage.height / 2;
if (Key.isDown(Key.UP))
{
tank._y -= 10;
}
if (Key.isDown(Key.DOWN))
{
tank._y += 10;
}
if (Key.isDown(Key.LEFT))
{
tank._x -= 10;
}
if (Key.isDown(Key.RIGHT))
{
tank._x += 10;
}
xdiff = _xmouse - tank._x;
ydiff = _ymouse - tank._y;
angle = Math.atan2(ydiff, xdiff);
angle = 0 - tank._rotation + angle * 180 / Math.PI;
tank.gun._rotation = angle;
}
onMouseDown = function ()
{
var __reg4 = {x: tank.gun.fire._x, y: tank.gun.fire._y};
tank.gun.localToGlobal(__reg4);
X = _xmouse - tank._x;
Y = _ymouse - tank._y;
ang = Math.atan2(Y, X);
var __reg3 = attachMovie("bullet", "bullet" + counter_bullet++, _root.getNextHighestDepth());
__reg3._x = __reg4.x + Math.cos(ang);
__reg3._y = __reg4.y + Math.sin(ang);
}
}
init();
Раньше пользовался декомпилятором, а привычка использовать переменные таким образом осталась.
Писали бы тогда на ассемблере... Прямая адресация памяти, регистры - романтика :)
Имён переменных вобоще не надо :)
Ксательно же вашего куска кода.... Тут надо всё в целом смотреть. Исходник выкладывайте...
Может у кого и возникнет желание порыться...
Alexey25
28.05.2016, 20:47
Мне так удобнее называть переменные, не нужно каждый раз придумывать новое название для переменной. Просто поставил цифру в конце переменной и все уже новая переменная.
caseyryan
28.05.2016, 21:46
Мне так удобнее называть переменные, не нужно каждый раз придумывать новое название для переменной. Просто поставил цифру в конце переменной и все уже новая переменная.
Действительно. Что за дураки вообще придумали давать переменным правильные названия. Так же намного интереснее)) написал какую-то чушь с цифрой, через месяц посмотрел на свое творчество, и полдня ломал голову за что каждая из них отвечает :D Но зато сэкономил время на придумывании нормальных названий)
Но только как-то не по фенг шую, ang, angle, xdiff, ydiff тоже надо переименовать во что-то типа __reg5, __reg6 и т.д. Чтобы все было в одном стиле
undefined
28.05.2016, 21:55
тож заметил двойные стандарты :)
Мне так удобнее называть переменные, не нужно каждый раз придумывать новое название для переменной. Просто поставил цифру в конце переменной и все уже новая переменная.
Ну тогда уж массив хотя бы....
var __:array = new Array()
__[124] = "HelloWorld"
__[38475683475] = 1
__[38475683476] = -1
Alexey25
29.05.2016, 11:21
А вам что всем есть дело как я пишу? Это дело каждого. Для меня главное, чтобы не глючило и не тормозила. А если все нормально работает то и не стоит заморачиваться как писать переменные. Есть игры написанные на flash которые возможно правильно написаны и они довольно крутые но очень сильно тормозят и играть невозможно. Да и еще dark256 вы чушь написали.
Проблему я решил надо было просто добавить следующие
tank.gun.localToGlobal(__reg4);
//Новою функцию которую я добавил
globalToLocal(__reg4);
Пробовал скомпилить? :)))))))
Alexey25
29.05.2016, 12:08
caseyryan спасибо за совет. В любом случае все это мне придется переписать на Action Script 3.0. Там и дам нормальные название переменным. А Action Script 2.0 пользуюсь потому, что он легче и можно быстрее получить нужный результат.
Добавлено через 33 секунды
dark256 Да уже протестировал все работает.
Добавлено через 1 минуту
Я бы исходники выложил, но форум блокирует все яндекс диск ссылки.
caseyryan
29.05.2016, 16:32
А вам что всем есть дело как я пишу? Это дело каждого. Для меня главное, чтобы не глючило и не тормозила.
Ты запостил это на форум и с этого момента это уже перестало быть только твоим делом. Если хочешь писать как тебе хочется, то можешь делать это, но не задавая вопросов на формуах. Думаешь кому-то охота ковыряться в этом "творчестве"?
Совет на будущее, чем чище и аккуратнее ты пишешь код, тем больше вероятность получения на свой вопрос быстрого и адекватного ответа.
Alexey25
30.05.2016, 10:54
caseyryan уже не имеет значение как я писал выше вопрос закрыт.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.