Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.02.2013, 00:36
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 1  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
По умолчанию Как узнать правильный угол поворота объекта в повернутом объекте

Здравствуйте. Есть MovieClip танк. У него есть внутри MovieClip башня (с дулом). Когда я не поворачиваю танк и стреляю, то всё отлично, танк стреляет в ту сторону, куда направлено дуло. Но вот беда: я начинаю поворачивать танк и стрелять. Пули на этот раз совершено меняют свою сторону полёта.
Спасибо большое.

Старый 15.02.2013, 01:14
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Хм.."очень странно" ) наверно проблема в реализации выстрела, надо видеть код.

Старый 15.02.2013, 01:16
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 3  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Код в студию, есть подозрение насчет несоответствия значений .rotate и проекций вектора направления на оси X и Y

Старый 15.02.2013, 13:29
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 4  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
предположу, что вы стреляете основываясь только на повороте самого дула относительно танка. в глобальной системе координат будет вот так:
Код AS3:
var ct:Matrix = turret.transform.concatenatedMatrix;
//вектор направления дула
var dir_x:Number = ct.a;
var dir_y:Number = ct.b;
//поворот дула
var angle:Number = Math.atan2( dir_y, dir_x ) * 180.0 / Math.PI;

Старый 15.02.2013, 18:36
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 5  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от samana Посмотреть сообщение
Хм.."очень странно" ) наверно проблема в реализации выстрела, надо видеть код.
Цитата:
Сообщение от KumoKairo Посмотреть сообщение
Код в студию, есть подозрение насчет несоответствия значений .rotate и проекций вектора направления на оси X и Y

Код AS3:
 
for(var i:Number = 0; i < bullets.length; i++)
{
	bullets[i].x += speedBullet * Math.cos(bullets[i].rotation * Math.PI / 180);
	bullets[i].y += speedBullet * Math.sin(bullets[i].rotation * Math.PI / 180);
}
 
var tankAngle:Number = tank.rotation * Math.PI / 180;
 
if(space)
{	
	bullet = new ObjectBullet();
	bullet.x = tank.x;
	bullet.y = tank.y;
	bullet.rotation =  tank.tower.rotation;
	bullets.push(bullet);
	stage.addChild(bullet);
}
Цитата:
Сообщение от nuToH Посмотреть сообщение
предположу, что вы стреляете основываясь только на повороте самого дула относительно танка. в глобальной системе координат будет вот так:
Код AS3:
var ct:Matrix = turret.transform.concatenatedMatrix;
//вектор направления дула
var dir_x:Number = ct.a;
var dir_y:Number = ct.b;
//поворот дула
var angle:Number = Math.atan2( dir_y, dir_x ) * 180.0 / Math.PI;
Так получилось то, что нужно. Спасибо. Вопрос: ct.a, ct.b. А почему буквы a и b? Вместо x и y.

Старый 15.02.2013, 18:43
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 6  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Это элементы матрицы просто.
__________________
hauts.ru

Старый 15.02.2013, 19:15
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 7  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от Hauts Посмотреть сообщение
Это элементы матрицы просто.
А их можно только "читать", изменять нельзя? Изменять координаты объекта (например, дула) через Matrix можно?

Старый 16.02.2013, 14:17
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от Dip52 Посмотреть сообщение
А их можно только "читать", изменять нельзя? Изменять координаты объекта (например, дула) через Matrix можно?
Свойство concatenatedMatrix - только для чтения. А matrix - можно менять, точнее задавать новую.

Старый 17.02.2013, 02:41
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 9  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от samana Посмотреть сообщение
Свойство concatenatedMatrix - только для чтения. А matrix - можно менять, точнее задавать новую.
То есть, нужно создать Matrix, поместить туда объект и с помощью определенных команд изменять координаты?

Старый 17.02.2013, 03:24
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 10  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Примерно это выглядит вот так
Код AS3:
var m:Matrix = new Matrix();//новая матрица
//var m:Matrix=s.transform.matrix;//или матрица объекта
m.translate(5, 10);
m.rotate(45);
 
s.transform.matrix = m;

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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