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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию Какими параметрами описывается поведение тела после столкновения с другим ?

Здравствуйте
Есть 2 флэшки, они общаются друг с другом при помощи p2p.
Есть 3 объекта b2CircleShape, 2 биты и одна шайба.
Одна бита принадлежит игроку а 2я оппоненту (2я флэшка)

При столкновении биты (b2CircleShape) с шайбой (b2CircleShape) мне нужно отправить по сети состояние шайбы так чтобы во 2й флэшке она "покатилась".

Вот так я "двигаю" биту
Код AS3:
protected function updateMouseJoint():void
		{
			pm.mouseXWorldPhys=PhysicsHelper.stage.mouseX/physicsModel.pixelsPerMeter;
			pm.mouseYWorldPhys=PhysicsHelper.stage.mouseY/physicsModel.pixelsPerMeter;
			var mousePVec:b2Vec2=new b2Vec2(pm.mouseXWorldPhys,pm.mouseYWorldPhys);
 
			var idealLocation:Point = new Point(pm.mouseXWorldPhys, pm.mouseYWorldPhys);
			var directionToTravel:b2Vec2 = new b2Vec2((idealLocation.x - userStickBody.GetPosition().x), idealLocation.y-userStickBody.GetPosition().y);
 
			directionToTravel.Multiply(40);
 
			userStickBody.SetLinearVelocity(directionToTravel); // толкаю шайбу битой
}
 
// кто-то с кем-то столкнулся
[EventHandler(event="PhysicsContactEvent.CONTACT_BEGIN",properties="data",priority="0")]
		public function contactBeginHandler(data:String):void
		{
			switch(data)
			{
				case P2PModel.WASHER_USERSTICK_CONTACT:
                                                        // столкнулись шайба с битой игрока
					trace("!!! PhysController new contact"); 
					washerJoints=new WasherJoints();
					washerJoints.joints=washerBody.GetJointList();
					trace("washerJoints: "+washerBody.GetJointList());
					break;
			}
		}
В обработчике contactBeginHandler washerBody.GetJointList() почему-то null.

Какие параметры шайбы мне нужно передать оппоненту ?
Изображения
 


Последний раз редактировалось djyamato; 01.09.2012 в 14:57.
Старый 01.09.2012, 16:33
gagaga вне форума Посмотреть профиль Отправить личное сообщение для gagaga Найти все сообщения от gagaga
  № 2  
Ответить с цитированием
gagaga
[+1 22.04.13]
[+1 06.03.13]

Регистрация: Apr 2012
Сообщений: 239
я там вам ответил на другом форуме =)

Добавлено через 4 минуты
после столкновения тела приобретают импульсы нормали и тангенциальные импульсы, которые пересчитываются на линейную и угловую скорости

Старый 01.09.2012, 16:53
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 3  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
то бишь, после столкновения шайбы с битой передавать washerBody.GetLinearVelocity() (шайба) ?
Код AS3:
[EventHandler(event="PhysicsContactEvent.CONTACT_BEGIN",properties="data",priority="0")]
		public function contactBeginHandler(data:String):void
		{
			switch(data)
			{
				case P2PModel.WASHER_USERSTICK_CONTACT:
					trace("!!! PhysController new contact GetLinearVelocity="+washerBody.GetLinearVelocity()); 
 
					washerData=new WasherData();
                                                        // отправка значения силы
					washerData.linearVelocity=washerBody.GetLinearVelocity();
					break;
			}
		}
 
                       // сообщение о том что шайба столкнулась с пользовательской битой (изменились данные для шайбы извне)
		[EventHandler(event="MessagesEvent.WASHER_DATA",properties="data")]
		public function messageWasherDataChangeHandler(data:Object):void
		{
			var directionToTravel:b2Vec2=new b2Vec2(data.linearVelocity.x,data.linearVelocity.x);
			washerBody.SetLinearVelocity(directionToTravel);
		}

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
В обработчике contactBeginHandler washerBody.GetJointList() почему-то null.
Потому, что joint - это шарнир. А у шайбы нет шарниров

Старый 01.09.2012, 17:42
gagaga вне форума Посмотреть профиль Отправить личное сообщение для gagaga Найти все сообщения от gagaga
  № 5  
Ответить с цитированием
gagaga
[+1 22.04.13]
[+1 06.03.13]

Регистрация: Apr 2012
Сообщений: 239
скорость всегда надо передавать не только при столкновении... у первой флешки полноценная физика, у второй флешки физика используется для экстраполяции

Добавлено через 44 секунды
иначе вы не сможете синхронизировать солверы

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

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

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


 


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


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