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

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

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

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

Вопрос по коду с http://www.emanueleferonato.com/2008...h-as3-version/
Так обрабатывается столкновение 2х шаров.
Не могу понять физику процесса
Код AS3:
private function solveBalls ( MCBallA:MovieClip, MCBallB:MovieClip ) : void
		{
			var nX1:Number = MCBallA.x;
			var nY1:Number = MCBallA.y;
			var nDistX:Number = MCBallB.x - nX1;
			var nDistY:Number = MCBallB.y - nY1;
 
			var nDistance:Number = Math.sqrt ( nDistX * nDistX + nDistY * nDistY );
			var nRadiusA:Number = MCBallA.width/2;
			var nRadiusB:Number = MCBallB.width/2;
			//var nRadius:Number = 10;
 
			var nNormalX:Number = nDistX/nDistance;
			var nNormalY:Number = nDistY/nDistance;
 
			var nMidpointX:Number = ( nX1 + MCBallB.x )/2;
			var nMidpointY:Number = ( nY1 + MCBallB.y )/2;
 
			MCBallA.x = nMidpointX - nNormalX * nRadiusA;
			MCBallA.y = nMidpointY - nNormalY * nRadiusA;
			MCBallB.x = nMidpointX + nNormalX * nRadiusB;
			MCBallB.y = nMidpointY + nNormalY * nRadiusB;
 
			var nVector:Number = ( ( MCBallA.nSpeedX - MCBallB.nSpeedX ) * nNormalX )+ ( ( MCBallA.nSpeedY - MCBallB.nSpeedY ) * nNormalY );
			var nVelX:Number = nVector * nNormalX;
			var nVelY:Number = nVector * nNormalY;
 
			MCBallA.nSpeedX -= nVelX;
			MCBallA.nSpeedY -= nVelY;
			MCBallB.nSpeedX += nVelX;
			MCBallB.nSpeedY += nVelY;
		}
Зачем нужно nNormalX:Number, какой смысл в nMidpointX - nNormalX * nRadiusA
Я так понимаю тут весь прикол в вычислении векторов движения шаров.


Могли бы прокоментировать код и объяснить как это работает?

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

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

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


 


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


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