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

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

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

Регистрация: Jul 2010
Сообщений: 24
По умолчанию Столкновение прямоугольника со стеной

Приветствую всех!

Запутался в простом вопросе больше на геометрию, чем на AS:
Есть прямоугольник, который "летает" по сцене.

Код "летания" сего выглядит так:
Код AS3:
/// Обработчик события входа в кадр.
private function onEnterFrame(_evnt:Event):void
{
	var radians:Number = (nCurDegree * Math.PI) / 180;
 
	someSprite.x += Math.cos(radians) * nCurSpeed;
	someSprite.y += Math.sin(radians) * nCurSpeed;
}
При попытке выхода за сцену он должен "отталкиваться" от краев по законам физики.
Т.е. см. скрин:
[IMG]http://img12.**************/img12/9799/rect.jpg[/IMG]
Собсна, вопрос - как такое реализовать?

Буду благодарен за пример кода или инфу по мат. части

===

Мерси, mry Все просто и работает


Последний раз редактировалось CaribbeanLegend; 02.08.2010 в 08:25.
Старый 02.08.2010, 07:38
mry вне форума Посмотреть профиль Отправить личное сообщение для mry Посетить домашнюю страницу mry Найти все сообщения от mry
  № 2  
Ответить с цитированием
mry
 
Аватар для mry

Регистрация: Aug 2009
Адрес: ХМАО
Сообщений: 47
может так попробовать:
Код AS3:
var ax:int=1;
var ay:int=1;
...
 
private function onEnterFrame(_evnt:Event):void
{
	var radians:Number = (nCurDegree * Math.PI) / 180;
 
	someSprite.x += Math.cos(radians) * nCurSpeed*ax;
	someSprite.y += Math.sin(radians) * nCurSpeed*ay;
 
	if ((someSprite.x>MaxX)||(someSprite.x<MinX)) {ax*=-1;}
	if ((someSprite.y>MaxY)||(someSprite.y<MinY)) {ay*=-1;}
}
__________________
Тяжела и неказиста жизнь простого программиста. Распрекрасна и богата жизнь межзвёздного пирата.

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

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

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


 


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


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