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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.06.2012, 17:58
CyberDude вне форума Посмотреть профиль Отправить личное сообщение для CyberDude Найти все сообщения от CyberDude
  № 1  
Ответить с цитированием
CyberDude
[+3 31.07.12]
[+1 27.08.13]
 
Аватар для CyberDude

Регистрация: Mar 2011
Адрес: 48.434715,35.032285
Сообщений: 56
Отправить сообщение для CyberDude с помощью Skype™
Question Нужна литература о Box2D на русском

Встречали ли вы литературу о Box2D на русском языке с примерами, если да, скиньте пожалуйста ссылку, желательно бесплатный источник...

П.С. Решил занятся изучением Box2D вплотную, но с английским не так хорошо как хотелось бы. Если были уже посты на эту тему, пожалуйста не злитесь? лучше скиньте ссылку на пост)
__________________
Хоть ты эту красоту не назовёшь граблями, всё равно никогда не наступай на них.

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Есть серия уроков
http://demiart.ru/forum/index.php?showtopic=181251

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Заняться вплотную это прочитать и понять исходник. Про nape на http://flashgameblogs.ru/ писали, по box2d тоже что-то было, можете поискать там.
__________________
:)

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

Регистрация: Sep 2006
Сообщений: 453
http://redefy.net/category/box2dflash/ здесь хорошие уроки

Старый 30.06.2012, 05:44
vizgl вне форума Посмотреть профиль Отправить личное сообщение для vizgl Найти все сообщения от vizgl
  № 5  
Ответить с цитированием
vizgl
 
Аватар для vizgl

Регистрация: Jun 2012
Сообщений: 70
Лучше немного подучить английский и больше не будет возникать проблем.
На будущее, хороший блог(на английском) http://www.emanueleferonato.com/
Есть куча демок/примеров работы с box2d и еще куча всего. Код в демках ужасный, но все же кое-чему можно научится.
__________________
Блог: http://devizgl.blogspot.com/

Старый 30.06.2012, 09:52
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 6  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от 54321go Посмотреть сообщение
http://redefy.net/category/box2dflash/ здесь хорошие уроки
Не читал другие, но эти уроки настоятельно рекомендую. Box2D осилил за один день по ним .
PS: Так как информация осваивается слишком быстро, то свойственно скоро забывать пройденное. Поэтому сразу советую написать небольшую утилитку, обобщающую некоторые методы. Вот, например, моя. Прошу не судить строго - я к этому классу еще не возвращался. Писал в первый день во время изучения box2D:
Код AS3:
package {
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.*;
	import flash.display.*;
	import game.subjects.*;
 
	/**
	 * Box2D basic transformations
	 * @author HardCoder
	 */
	public class B2Transformer {
		/**
		 * Constant of transformation pixels/meters
		 */
		public static const METERS:int = 30;
		/**
		 * Constant to update world
		 */
		public static const TIMES_STEP:Number = 1 / 60;
		/**
		 * Constant to update world
		 */
		public static const VELOCITY_ITERATIONS:int = 10;
		/**
		 * Constant to update world
		 */
		public static const POSITION_ITERATIONS:int = 10;
 
		public function B2Transformer() {
		}
 
		/**
		 * Converts meters to pixels
		 * @param	meters - number of meters
		 * @return	number of pixels
		 */
		public static function metersTopixels(meters:Number):Number {
			return METERS * meters;
		}
 
		/**
		 * Converts  pixels to meters
		 * @param	pixels - number of pixels
		 * @return	number of meters
		 */
		public static function pixelsToMeters(pixels:Number):Number {
			return pixels / METERS;
		}
 
		/**
		 * Create Box2D world
		 * @param	gravity - world gravity
		 * @return	Box2D world
		 */
		public static function createWorld(gravity:b2Vec2 = null):b2World {
			if (!gravity)
				gravity = b2Vec2.Make(0, 0);
			return new b2World(gravity, true);
		}
 
		/**
		 * Adds the debug drawing to b2World
		 * @param	world - b2World
		 * @param	sprite - sprite, where graphics will be displayed
		 */
		public static function addDebugDraw(world:b2World, sprite:Sprite):void {
			var debugDraw:b2DebugDraw = new b2DebugDraw();
			debugDraw.SetSprite(sprite);
			debugDraw.SetDrawScale(30);
			debugDraw.SetFillAlpha(0.5);
			debugDraw.SetLineThickness(1);
			debugDraw.SetFlags(b2DebugDraw.e_jointBit | b2DebugDraw.e_shapeBit);
			world.SetDebugDraw(debugDraw);
		}
 
		/**
		 * Creates circle body to b2World
		 * @param	world - b2World
		 * @param	type - (b2Body.b2_staticBody:uint = 0, b2Body.b2_kinematicBody:uint = 1, b2Body.b2_dynamicBody:uint = 2)
		 * @param	x - position in the world in pixels
		 * @param	y - position in the world in pixels
		 * @param	radius - circle radius in pixels
		 * @param	userData - data that is linked to this body
		 * @param	allowSleep - will the body be automaticly deactivated
		 * @return	b2Body
		 */
		public static function createCircleBody(world:b2World, type:uint, x:Number, y:Number, radius:Number, userData:* = null, allowSleep:Boolean = true):b2Body {
			var bodyDef:b2BodyDef = new b2BodyDef();
			bodyDef.type = type;
			bodyDef.allowSleep = allowSleep;
			bodyDef.userData = userData;
			bodyDef.position.Set(B2Transformer.pixelsToMeters(x), B2Transformer.pixelsToMeters(y));
			var body:b2Body = world.CreateBody(bodyDef);
			var circleShape:b2CircleShape = new b2CircleShape(B2Transformer.pixelsToMeters(radius))
			var fixture:b2FixtureDef = new b2FixtureDef();
			fixture.density = 1000;
			fixture.friction = 0;
			fixture.restitution = 0;
			fixture.shape = circleShape;
			body.CreateFixture(fixture);
			return body;
		}
 
		/**
		 * Creates polygon body to b2World
		 * @param	world - b2World
		 * @param	type - (b2Body.b2_staticBody = 0, b2Body.b2_kinematicBody = 1, b2Body.b2_dynamicBody = 2)
		 * @param	x - position in the world in pixels
		 * @param	y - position in the world in pixels
		 * @param	width - poligon width in pixels
		 * @param	height - poligon height in pixels
		 * @param	userData - data that is linked to this body
		 * @param	allowSleep - will the body be automaticly deactivated
		 * @return	b2Body
		 */
		public static function createPolygonBody(world:b2World, type:uint, x:Number, y:Number, width:Number, height:Number, userData:* = null, allowSleep:Boolean = true):b2Body {
			var bodyDef:b2BodyDef = new b2BodyDef();
			bodyDef.type = type;
			bodyDef.allowSleep = allowSleep;
			bodyDef.userData = userData;
			bodyDef.position.Set(B2Transformer.pixelsToMeters(x), B2Transformer.pixelsToMeters(y));
			var body:b2Body = world.CreateBody(bodyDef);
			var polygonShape:b2PolygonShape = b2PolygonShape.AsBox(B2Transformer.pixelsToMeters(width) / 2, B2Transformer.pixelsToMeters(height) / 2);
			var fixture:b2FixtureDef = new b2FixtureDef();
			fixture.density = 2;
			fixture.friction = 0;
			fixture.restitution = 0;
			fixture.shape = polygonShape;
			body.CreateFixture(fixture);
			return body;
		}
	}
}
Добавлено через 3 минуты
Ну и, конечно, в методах можно по своему настроить density, friction и restitution. Я писал под конкретную игру, поэтому эти свойства фиксированы.

Добавлено через 11 минут
раз уж начал, то и пример использования:
Код AS3:
package {
	import Box2D.Common.Math.b2Vec2;
	import Box2D.Dynamics.b2World;
	import flash.display.Sprite;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author HardCoder
	 */
	public class Main extends Sprite {
		private var _world:b2World;
 
		public function Main() {
			this._world = B2Transformer.createWorld(new b2Vec2(0, 10));
			B2Transformer.addDebugDraw(this._world, this);
			B2Transformer.createCircleBody(this._world, 2, 100, 20, 20);
			B2Transformer.createPolygonBody(this._world, 0, 0, 300, 600, 30);
			this.addEventListener(Event.ENTER_FRAME, loop);
		}
 
		private function loop(e:Event):void {
			this._world.Step(B2Transformer.TIMES_STEP, B2Transformer.VELOCITY_ITERATIONS, B2Transformer.POSITION_ITERATIONS);
			this._world.ClearForces();
			this._world.DrawDebugData();
		}
	}
}
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 02.07.2012, 17:35
CyberDude вне форума Посмотреть профиль Отправить личное сообщение для CyberDude Найти все сообщения от CyberDude
  № 7  
Ответить с цитированием
CyberDude
[+3 31.07.12]
[+1 27.08.13]
 
Аватар для CyberDude

Регистрация: Mar 2011
Адрес: 48.434715,35.032285
Сообщений: 56
Отправить сообщение для CyberDude с помощью Skype™
Спасибо всем за информацию...
__________________
Хоть ты эту красоту не назовёшь граблями, всё равно никогда не наступай на них.

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

Теги
box2d
Опции темы
Опции просмотра

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

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


 


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


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