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

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

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

Регистрация: Aug 2003
Адрес: Москва
Сообщений: 449
Отправить сообщение для ВАРАН с помощью ICQ
По умолчанию задачка с танком

Допустим вот есть некий объект. Назовём его условно танк. У танка есть дуло. Дуло должно вращаться за мышкой. Сам танк должен управляться стрелками клавиатуры.

1) задача чтобы дуло не перескакивало когда градус задаётся больше 180 или -180. Тоесть чтобы дуло всегда вращалось по наименьшей дуге.
2) задача чтобы y и x танка изменялись в зависимости от деферента. Тоесть куда смотрит нос танка туда он и едет.

Исходник прилагается. Посмотрите, пожалуйста, кто в тригонометрии разбирается.
Вложения
Тип файла: rar test.rar (16.7 Кб, 69 просмотров)
__________________
Он манэ падмэ ХУМ!

Старый 10.10.2006, 21:27
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
бородатые вопросы, однако..
в танке:
Код:
function onMouseMove(){//дуло за мышой (дуло д.б. в {0,0} танка)
	t_turet._rotation=180/Math.PI*Math.atan2(this._ymouse,this._xmouse)
}

var speed=2;
function onEnterFrame(){//едем по курсу
	var d=0;
	var r=0;
	d+=Key.isDown(Key.UP);
	d-=Key.isDown(Key.DOWN);
	r-=Key.isDown(Key.LEFT);
	r+=Key.isDown(Key.RIGHT);
	_rotation+=r;
	_x+=d*Math.cos(Math.PI*_rotation/180)*speed;
	_y+=d*Math.sin(Math.PI*_rotation/180)*speed;
}

Старый 10.10.2006, 22:59
ВАРАН вне форума Посмотреть профиль Отправить личное сообщение для ВАРАН Найти все сообщения от ВАРАН
  № 3  
Ответить с цитированием
ВАРАН
 
Аватар для ВАРАН

Регистрация: Aug 2003
Адрес: Москва
Сообщений: 449
Отправить сообщение для ВАРАН с помощью ICQ
Спасибо за скрипт курса. А вот про пушку немного не то. Примерно тоже самое я уже написал. Правда более громоздко получилось. Идея в том чтобы пушка двигалась за мышкой с затухающиим отстованием, тоесть как будто с некой физикой. Как у меня в примере, но там есть одна проблема. Когда _rotation стаит например на 170 и скрипт задаёт -170 градусов для нового поворота то дуло совершает оборот не в 20 градусов как надо а в 340. Как это решить, ума не приложу. По идее надо найти самую короткую дугу и вычесть её из текущего градуса. Тоесть тут надо в радианах как то, а я в этом ни бум бум...
__________________
Он манэ падмэ ХУМ!

Старый 10.10.2006, 23:51
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ясно, надо просто 'длинные' (>180) повороты заменить 'короткими':
Код:
var speed=2;
function onEnterFrame(){
	//едем по курсу
	var d=0;
	var r=0;
	d+=Key.isDown(Key.UP);
	d-=Key.isDown(Key.DOWN);
	r-=Key.isDown(Key.LEFT);
	r+=Key.isDown(Key.RIGHT);
	_rotation+=r;
	_x+=d*Math.cos(Math.PI*_rotation/180)*speed;
	_y+=d*Math.sin(Math.PI*_rotation/180)*speed;
	//крутим дулом
	var targAngle=180/Math.PI*Math.atan2(this._ymouse,this._xmouse);
	var currAngle=t_turet._rotation;
	var da=(targAngle-currAngle);
	if(da>180)da-=360;
	if(da<-180)da+=360;
	t_turet._rotation+=da/10;
}

Старый 11.10.2006, 11:12
ВАРАН вне форума Посмотреть профиль Отправить личное сообщение для ВАРАН Найти все сообщения от ВАРАН
  № 5  
Ответить с цитированием
ВАРАН
 
Аватар для ВАРАН

Регистрация: Aug 2003
Адрес: Москва
Сообщений: 449
Отправить сообщение для ВАРАН с помощью ICQ
Божемой - так просто...что то не то у меня с головой. Всё время ищу не там. Спасибо огромное...
__________________
Он манэ падмэ ХУМ!

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

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

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


 


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


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