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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.11.2013, 01:20
allex вне форума Посмотреть профиль Отправить личное сообщение для allex Найти все сообщения от allex
  № 1  
Ответить с цитированием
allex
[+3 05.12.12]

Регистрация: Mar 2012
Сообщений: 46
По умолчанию воздушный шар в box2d

Доброго времени суток уважаемые гуру.Хотел спросить,кто сталкивался в BOX2D с созданием тела (типа воздушный шарик) на которого не действует гравитация? Я сам использовал -
Код AS3:
SetLinearVelocity	()
в eventframe ! Подбором подбирал силу,но тело как то дергается. Потом нашел такую запись -
Код:
b->ApplyForce( b2Vec2(0.0,9.8*b->GetMass()),b->GetWorldCenter()); // here 0.0 is x, 9.8 is y (the gravity)
перевёл в AS3 ,но тело тупа падает(((

Может, кто поможет,какой верный способ? Спасибо

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
http://www.cocos2d-iphone.org/forums...n-air-objects/

Старый 08.11.2013, 10:18
allex вне форума Посмотреть профиль Отправить личное сообщение для allex Найти все сообщения от allex
  № 3  
Ответить с цитированием
allex
[+3 05.12.12]

Регистрация: Mar 2012
Сообщений: 46
caseyryan спасибо за ответ и ссылку,но в этом примере тоже самое,что и я предложил в своём вопросе.У меня ничего так не получилось,вы лично сами проверяли ваш пример или просто скинули ссылку? Спасибо

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
вы лично сами проверяли ваш пример или просто скинули ссылку?
Не проверял. Необходимости не было.
Вообще, есть куча тем по созданию воздушного шара в бокс2д.
https://www.google.com/search?btnG=1...ot+air+balloon

С ApplyForce вариант тоже возможен. Там еще надо плотность тела поменять и массу

Старый 08.11.2013, 13:22
allex вне форума Посмотреть профиль Отправить личное сообщение для allex Найти все сообщения от allex
  № 5  
Ответить с цитированием
allex
[+3 05.12.12]

Регистрация: Mar 2012
Сообщений: 46
сделал так -
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
	import Box2D.Dynamics.*;
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	public class Main extends Sprite {
		private var world:b2World;
		private var worldScale:Number=30;
		private var theSphere:b2Body;
 
 
		public function Main() {
			world=new b2World(new b2Vec2(0,10),true);
			debugDraw();
			floor();
 
 
			sphere(170, 200, 40);
 
 
			theSphere.ApplyForce(new b2Vec2(0, -10*theSphere.GetMass()),theSphere.GetPosition());
 
			addEventListener(Event.ENTER_FRAME,updateWorld);
		}
		private function sphere(pX:int,pY:int,r:Number):b2Body {
			var bodyDef:b2BodyDef=new b2BodyDef();
			bodyDef.position.Set(pX/worldScale,pY/worldScale);
			bodyDef.type=b2Body.b2_dynamicBody;
			bodyDef.userData=pY;
			var circleShape:b2CircleShape;
			circleShape=new b2CircleShape(r/worldScale);
			var fixtureDef:b2FixtureDef=new b2FixtureDef();
			fixtureDef.shape=circleShape;
			fixtureDef.density=1;
			fixtureDef.restitution=0.4;
			fixtureDef.friction=0.5;
			theSphere=world.CreateBody(bodyDef);
			theSphere.CreateFixture(fixtureDef);
			return theSphere;
		}
		private function floor():void {
			var bodyDef:b2BodyDef=new b2BodyDef();
			bodyDef.position.Set(320/worldScale,465/worldScale);
			var polygonShape:b2PolygonShape=new b2PolygonShape();
			polygonShape.SetAsBox(320/worldScale,15/worldScale);
			var fixtureDef:b2FixtureDef=new b2FixtureDef();
			fixtureDef.shape=polygonShape;
			fixtureDef.restitution=0.4;
			fixtureDef.friction=0.5;
			var theFloor:b2Body=world.CreateBody(bodyDef);
			theFloor.CreateFixture(fixtureDef);
		}
		private function debugDraw():void {
			var debugDraw:b2DebugDraw=new b2DebugDraw();
			var debugSprite:Sprite=new Sprite();
			addChild(debugSprite);
			debugDraw.SetSprite(debugSprite);
			debugDraw.SetDrawScale(worldScale);
			debugDraw.SetFlags(b2DebugDraw.e_shapeBit);
			debugDraw.SetFillAlpha(0.5);
			world.SetDebugDraw(debugDraw);
		}
		private function updateWorld(e:Event):void {
 
			world.Step(1/30,10,10);
 
 
 
			world.ClearForces();
			world.DrawDebugData();
		}
 
	}
}
падает!!!! по идее как в гугле,но инфы не достаточно(

Добавлено через 5 часов 7 минут
В общем надо убрать - [AS3world.ClearForces();][/as3]

Но там не всё так просто,надо разбираться дальше)))

Еще интересная статья - http://www.emanueleferonato.com/2009...es-with-box2d/

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

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

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


 


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


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