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

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

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

Регистрация: Nov 2009
Сообщений: 176
По умолчанию отбивание шарика от линии

Приветствую!
Не получается решить одну проблему. Есть шарик который двигается. При столкновении с линией, он должен правильно отбиться. Почему то в моём коде это не происходит. Где у меня ошибка?

Код AS3:
ball.rotation = 90;
 
addEventListener(Event.ENTER_FRAME, onEnterFrame);
 
function onEnterFrame(event:Event):void
{
	moveBall();
 
	if(/*столкновение произошло*/) {
		reflection(new Point(ball.x, ball.y));
	}
}
 
function reflection(pt:Point):void
{
	var x:Number = pt.x;
	var y:Number = pt.y;
	var perpendicular:Number = ball.rotation - Math.PI / 2;
	var iangle:Number = Math.atan2(y, x); 
	var rangle:Number = 2 * perpendicular - iangle;//угол падения равен углу отражения;
 
       ball.rotation = rangle;
}
 
function moveBall():void
{
	var radians:Number = ball.rotation*Math.PI/180;
	var vectorX:Number = Math.cos(radians);
	var vectorY:Number = Math.sin(radians);
 
	var speed:Number = 2;
	ball.x += speed*vectorX;
        ball.y += speed*vectorY;	
}

Старый 01.02.2014, 17:08
FlasherEgor вне форума Посмотреть профиль Отправить личное сообщение для FlasherEgor Найти все сообщения от FlasherEgor
  № 2  
Ответить с цитированием
FlasherEgor

Регистрация: Nov 2013
Сообщений: 86
А где функция, что проверяет, произошло ли столкновение? Или она без проблем работает?

Старый 01.02.2014, 17:12
Wadimir вне форума Посмотреть профиль Отправить личное сообщение для Wadimir Найти все сообщения от Wadimir
  № 3  
Ответить с цитированием
Wadimir

Регистрация: Nov 2009
Сообщений: 176
Цитата:
Сообщение от FlasherEgor Посмотреть сообщение
А где функция, что проверяет, произошло ли столкновение? Или она без проблем работает?
та функция работает правильно и я подумал что не нужно её здесь описывать. Вопрос ведь не про столкновение, а про отбивание.

Старый 01.02.2014, 18:22
FlasherEgor вне форума Посмотреть профиль Отправить личное сообщение для FlasherEgor Найти все сообщения от FlasherEgor
  № 4  
Ответить с цитированием
FlasherEgor

Регистрация: Nov 2013
Сообщений: 86
Может, дело в
Код AS3:
var perpendicular:Number = ball.rotation - Math.PI / 2;
Rotation ведь, насколько я помню, в градусах, а Math.PI - радианы...

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

Регистрация: Nov 2009
Сообщений: 176
так как правильно посчитать?

Старый 02.02.2014, 15:00
RandomUser вне форума Посмотреть профиль Отправить личное сообщение для RandomUser Найти все сообщения от RandomUser
  № 6  
Ответить с цитированием
RandomUser

Регистрация: Mar 2006
Адрес: Odessa
Сообщений: 157
А от какой линии шарик должен отталкиваться?
__________________
Не всех война убила - многих покалечила

Старый 02.02.2014, 16:53
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Если честно, то я не знаю, как сделать отскок, но я точно знаю, что если Вы хотите сделать отскок от любой поверхности, то идете не верно. По коду видно, что мяч вращается, а это затрудняет вычисление правильного угла. При расчетах отскока нужно учитывать нормаль прямой. Мне самому интересно, как это сделать.

Добавлено через 31 секунду
Может кто-то хоть последовательность правильную подскажет.

Старый 03.02.2014, 12:10
Wadimir вне форума Посмотреть профиль Отправить личное сообщение для Wadimir Найти все сообщения от Wadimir
  № 8  
Ответить с цитированием
Wadimir

Регистрация: Nov 2009
Сообщений: 176
так мяч и должен вращаться. Это может быть и не мяч, а машинка, которая разворачивается и едет в другую сторону.

Старый 03.02.2014, 16:41
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 9  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Если что-то не понятно, то спрашивайте.
Картинки png, почему они с белым фоном на форуме?
Миниатюры
Нажмите на изображение для увеличения
Название: отражение_луча_0.png
Просмотров: 44
Размер:	57.7 Кб
ID:	30445   Нажмите на изображение для увеличения
Название: отражение_луча_1.png
Просмотров: 46
Размер:	112.2 Кб
ID:	30446   Нажмите на изображение для увеличения
Название: отражение_луча_2.png
Просмотров: 47
Размер:	105.7 Кб
ID:	30447  

Старый 03.02.2014, 17:51
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 10  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Wadimir, вы, часом, не из этой темы функцию reflection попытались использовать? Так оно и там не работало.
Обратите внимание на пост №3
из той же темы. Там есть рациональное зерно, и если вы немного переосмыслите подход к реализации геометрии на плоскости, вам может это помочь.

Akopalipsis, не устаете меня поражать.

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

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

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


 


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


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