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

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

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

Регистрация: Feb 2011
Сообщений: 4
По умолчанию Движение под углом

Здравствуйте .
Подскажите пожалуйста , как реализовать что бы объект двигался под определённым углом.

Как в графических редакторах , зажимаешь Shift и объект движется под уголом 0,45,90... в зависимости от положения мыши.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Определяете сектор круга (с центром в точке начального положения объекта), в котором находится курсор мыши. Исходя из этих данных двигаете объект либо по горизонтали, либо по вертикали, либо по диагонали. Класс Math вам в помощь. В частности Math.atan2().

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

Регистрация: Feb 2011
Сообщений: 4
По прямым то это понятно как сделать , а вот под углом не знаю как сделать движение.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
а вот под углом не знаю как сделать движение.
Создаете вектор (в качестве вектора может выступать Point). Единичный вектор будет задавать направление. Длина вектора определяет скорость перемещения. Ну и в цикле анимации прибавляете координаты вектора к координатам вашего объекта.

Старый 05.02.2011, 17:39
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 5  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Код AS3:
x += speed*Math.cos(angel)
y += speed*Math.sin(angel)

Старый 05.02.2011, 17:49
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 6  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Код AS3:
x += speed*Math.cos(angel)
y += speed*Math.sin(angel)
для таких целей есть векторы.
да и angel -> angle

Старый 05.02.2011, 18:14
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 7  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Согласен. Вот так надо?

Код AS3:
var speed:Number = 2;
 
var xyAngle:Number = Math.PI / 3;
var zAngle:Number = Math.PI / 4;
var xyProect:Number = Math.sin(zAngle);
 
var speed:Vector3D = new Vector3D(speed * xyProect * Math.cos(xyAngle),speed * xyProect * Math.sin(xyAngle),speed *Math.cos(zAngle));
 
x +=  speed.x;
y +=  speed.y;
z +=  speed.z;

Старый 05.02.2011, 18:20
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 8  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
ну не стоит перегибать. Автор указал, что будет двигать под одним из углов. Следовательно лучше заранее посчитать вектор нежели каждый раз тягать синусы и косинусы.
Я это представлял как-то так:

Код AS3:
var myVec:Point = new Point( Math.cos(angle), Math.sin(angle) );
myVec.normalize( 1.0 );
 
// Повторяющаяся часть:
x += speed * myVec.x;
y += speed * myVec.y;

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

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

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


 


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


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