Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Перемещение снаряда танковой пушки (http://www.flasher.ru/forum/showthread.php?t=212922)

Alexey25 28.05.2016 13:54

Перемещение снаряда танковой пушки
 
Вложений: 2
Пытаюсь создать перемещение снаряда танковой пушки. Вот код:
Код AS1/AS2:

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

Но снаряд по прежнему появляется по центру как показано но рисунке выше. Подскажите пожалуйста Как перенести снаряд так чтобы он появлялся около новой пушки. При том при всем, что нужно учитывать, что пушка поворачивается?

dark256 28.05.2016 16:02

Речь о пушке или о стволе оной?
Используйте координаты ствола для bullet....
И кстати, вам удобно такие переменные юзать - "__reg3" ? ;)

undefined 28.05.2016 16:03

похоже это творчество декомпилятора)

Alexey25 28.05.2016 16:57

Раньше пользовался декомпилятором, а привычка использовать переменные таким образом осталась.

Добавлено через 42 минуты
Получилось, но при перемещении сцены снаряды появляются не там где надо, стоит только перемещение сцены убрать и все работает. Без перемещение сцены никак не обойтись. Кто что посоветует? Был создан новый мувиклип под названием fire. Он находится около дула пушки и отвечает за создания пуль. Вот код:
Код AS1/AS2:

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();


dark256 28.05.2016 20:16

Цитата:

Раньше пользовался декомпилятором, а привычка использовать переменные таким образом осталась.
Писали бы тогда на ассемблере... Прямая адресация памяти, регистры - романтика :)
Имён переменных вобоще не надо :)

Ксательно же вашего куска кода.... Тут надо всё в целом смотреть. Исходник выкладывайте...
Может у кого и возникнет желание порыться...

Alexey25 28.05.2016 20:47

Мне так удобнее называть переменные, не нужно каждый раз придумывать новое название для переменной. Просто поставил цифру в конце переменной и все уже новая переменная.

caseyryan 28.05.2016 21:46

Цитата:

Сообщение от Alexey25 (Сообщение 1194373)
Мне так удобнее называть переменные, не нужно каждый раз придумывать новое название для переменной. Просто поставил цифру в конце переменной и все уже новая переменная.

Действительно. Что за дураки вообще придумали давать переменным правильные названия. Так же намного интереснее)) написал какую-то чушь с цифрой, через месяц посмотрел на свое творчество, и полдня ломал голову за что каждая из них отвечает :D Но зато сэкономил время на придумывании нормальных названий)

Но только как-то не по фенг шую, ang, angle, xdiff, ydiff тоже надо переименовать во что-то типа __reg5, __reg6 и т.д. Чтобы все было в одном стиле

undefined 28.05.2016 21:55

тож заметил двойные стандарты :)

dark256 28.05.2016 22:00

Цитата:

Сообщение от Alexey25 (Сообщение 1194373)
Мне так удобнее называть переменные, не нужно каждый раз придумывать новое название для переменной. Просто поставил цифру в конце переменной и все уже новая переменная.

Ну тогда уж массив хотя бы....

Код AS1/AS2:

var __:array = new Array()
 
__[124] = "HelloWorld"
__[38475683475] = 1
__[38475683476] = -1


Alexey25 29.05.2016 11:21

А вам что всем есть дело как я пишу? Это дело каждого. Для меня главное, чтобы не глючило и не тормозила. А если все нормально работает то и не стоит заморачиваться как писать переменные. Есть игры написанные на flash которые возможно правильно написаны и они довольно крутые но очень сильно тормозят и играть невозможно. Да и еще dark256 вы чушь написали.

Проблему я решил надо было просто добавить следующие

Код AS1/AS2:

        tank.gun.localToGlobal(__reg4);
        //Новою функцию которую я добавил
        globalToLocal(__reg4);



Часовой пояс GMT +4, время: 16:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.