Форум 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=93253)

swfSlavik 16.03.2007 20:00

Простой вопрос про логику игрушки.
 
Кто как реализовывал пушку которая стреляет в разные стороны, тоесть положение внизу экрана и она недвижима, но поворачивает дуло (180)? Типа чтобы снаряды летали красиво. Просто идеи.

iNils 16.03.2007 20:12

Красиво это как?

swfSlavik 16.03.2007 22:33

Цитата:

Сообщение от iNils
Красиво это как?

з точки зрения реализации.

iNils 16.03.2007 23:37

Обычно люди сначала предлагают свою реализацию, а потом спрашивают как ее сделать более красивой. А вы сразу хотите, что бы и сделали и красиво?:)

Kikasso 17.03.2007 06:41

Сперва бабахает, потом пуляет.. И чтоб звук погуще.. И дуло чтоп со скрипом поворачивалось.. А при взрыве окно броузера смещать джаваскриптом. А если в тебя попали - синий экран и "нажмите любую клавишу"

relevance4 17.03.2007 19:57

Цитата:

Сообщение от Kikasso
Сперва бабахает, потом пуляет.. И чтоб звук погуще.. И дуло чтоп со скрипом поворачивалось.. А при взрыве окно броузера смещать джаваскриптом. А если в тебя попали - синий экран и "нажмите любую клавишу"

а чё! круто, я бы поиграл.

Цитата:

Сообщение от swfSlavik
Типа чтобы снаряды летали красиво. Просто идеи.

а какие могут быть идеи? математика и физика. мне лично только эт этих слов уже красиво стало

swfSlavik 17.03.2007 21:13

Kikasso - очень хороший советчик, нада обязательно прислушаца.

Но может кто-то болле конструктивно подойдет к вопросу. Я вот поворачиваю дуло при помощи _rotation, a вот как привязать пулю к концу дула?? я и через синусы и через косинусы, кое как выходит но до идеала далеко.

iNils 17.03.2007 21:31

Автор, мы гадать будем как там что делаете или вы все же нам это покажите?

swfSlavik 17.03.2007 21:58

Мне была фстыдна но так и быть.

Код:

gun.cannon._rotation = angle; //Собственно поворот дула

angleRadians = (angle/360)*2*Math.PI
....

//Определение нового места положения пули(ball) (ну очень фстыдна)
(angleRadians <= 0)?tmpY = (gun._y-5) + -1*Math.sin(angleRadians)*60:tmpY = (gun._y-5) + Math.sin(angleRadians)*50;
tmpX = (gun._x + gun._width/2-10) + Math.sin(angleRadians)*120;

//Ромещение пули
tmpBall._x = tmpX;
tmpBall._y = tmpY;


iNils 17.03.2007 22:15

1. Вы специально пишите " фстыдна"? Правилами это запрещено http://www.flasher.ru/forum/rules.php пункт 1
2. Зачем такая сложная конструкция?
Код:

angleRadians = (angle/360)*2*Math.PI
Достаточно
Код:

angleRadians = angle * (Math.PI / 180);
3. Собственно сам код, писал в слепую, так как по коду невозможно узнать свойство и организацию ваших мувиклипов
Код:

angle = 180;
//// длина ствола пушки
lengthGun = 120;
//// разница между фактическим углом пушки и углом поворота мувиклипа
//// то есть, если пушка смотрит вверх, а мувиклип повернут на 0 градусов, то угол будет -90
angleInit = -90;


gun.cannon._rotation = angle;
//Собственно поворот дула
angleRadians = (angleInit + angle) * (Math.PI / 180);
var point:Object = {x:gun.cannon._x, y:gun.cannon._y};
gun.cannon.localToGlobal (point);

//Ромещение пули
tmpBall._x = point.x + lengthGun * Math.cos (angleRadians);
tmpBall._y = point.y + lengthGun * Math.sin (angleRadians);



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

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