![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте
Есть 2 флэшки, они общаются друг с другом при помощи p2p. Есть 3 объекта b2CircleShape, 2 биты и одна шайба. Одна бита принадлежит игроку а 2я оппоненту (2я флэшка) При столкновении биты (b2CircleShape) с шайбой (b2CircleShape) мне нужно отправить по сети состояние шайбы так чтобы во 2й флэшке она "покатилась". Вот так я "двигаю" биту 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; } } Какие параметры шайбы мне нужно передать оппоненту ? Последний раз редактировалось djyamato; 01.09.2012 в 14:57. |
|
|||||
|
[+1 22.04.13]
[+1 06.03.13] Регистрация: Apr 2012
Сообщений: 239
|
я там вам ответил на другом форуме =)
Добавлено через 4 минуты после столкновения тела приобретают импульсы нормали и тангенциальные импульсы, которые пересчитываются на линейную и угловую скорости |
|
|||||
|
то бишь, после столкновения шайбы с битой передавать washerBody.GetLinearVelocity() (шайба) ?
[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); } |
|
|||||
|
[+1 22.04.13]
[+1 06.03.13] Регистрация: Apr 2012
Сообщений: 239
|
скорость всегда надо передавать не только при столкновении... у первой флешки полноценная физика, у второй флешки физика используется для экстраполяции
Добавлено через 44 секунды иначе вы не сможете синхронизировать солверы |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|