Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
GreenForest
50 / 42 / 25
Регистрация: 05.12.2013
Сообщений: 275
1

Движение объекта в Box2D

01.01.2014, 23:39. Просмотров 713. Ответов 3
Метки нет (Все метки)

Помогите плиз) Начал разбираться с движком Box2D. Написал код (с помощью нескольких статей в Сети), но почему-то квадратик, который меньше(сверху), не движется. Найдите ошибку)

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package  
{
    import adobe.utils.CustomActions;
    import Box2D.Collision.b2AABB;
    import Box2D.Collision.Shapes.b2PolygonShape;
    import Box2D.Common.Math.b2Vec2;
    import Box2D.Dynamics.b2Body;
    import Box2D.Dynamics.b2BodyDef;
    import Box2D.Dynamics.b2DebugDraw;
    import Box2D.Dynamics.b2FixtureDef;
    import Box2D.Dynamics.b2World;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    
    /** 
     * ...
     * @author 
     */
    public class Level extends Sprite
    {
        public const RATIO:Number = 30;
        private var _world:b2World;
        private var Sqr:b2Body;
        
        private var _sprites:Vector.<Sprite> = new Vector.<Sprite>();
        private var _bodies:Vector.<b2Body> = new Vector.<b2Body>();
        
        
        public function Level() 
        {
            gob2();
            
        }
        
        private function gob2 () 
        {
            _world = new b2World(new b2Vec2(0, 1000), false);
            
            addBox(10, 400, 1050, 10);
            addSqr(200, 300, 25, 10);
        }
        
        private function addBox(x:Number, y:Number, w:Number, h:Number):void 
        {
            var bodyDef:b2BodyDef = new b2BodyDef();
            bodyDef.position.Set (x / RATIO, y / RATIO);
            bodyDef.type = b2Body.b2_staticBody
            var content:Sprite = new Sprite();
            content.graphics.beginFill(0x000000, 1);
            content.graphics.drawRect(x - w, y - h, w * 2, h * 2);
            bodyDef.userData = content;
            addChild(bodyDef.userData);
            
            var boxShape:b2PolygonShape = new b2PolygonShape();
            boxShape.SetAsBox(w / RATIO, h / RATIO);
            
            var fixtureDef:b2FixtureDef = new b2FixtureDef();
            fixtureDef.shape = boxShape;
            fixtureDef.density = 1;
            
            var body:b2Body = _world.CreateBody(bodyDef);
            body.CreateFixture(fixtureDef);
            
            addEventListener(Event.ENTER_FRAME, OnLive);
        }
        
        private function addSqr(x:Number, y:Number, w:Number, h:Number):void 
        {
            var bodyDef:b2BodyDef = new b2BodyDef();
            bodyDef.position.Set (x / RATIO, y / RATIO);
            bodyDef.type = b2Body.b2_dynamicBody;
            var content:Sprite = new Sprite();
            content.graphics.beginFill(0x000000, 1);
            content.graphics.drawRect(x - w, y - h, w * 2, h * 2);
            bodyDef.userData = content;
            addChild(bodyDef.userData);
            
            var boxShape:b2PolygonShape = new b2PolygonShape();
            boxShape.SetAsBox(w / RATIO, h / RATIO);
            
            var fixtureDef:b2FixtureDef = new b2FixtureDef();
            fixtureDef.shape = boxShape;
            fixtureDef.density = 1;
            
            Sqr = _world.CreateBody(bodyDef);
            Sqr.CreateFixture(fixtureDef);
            
            Sqr.ApplyImpulse(new b2Vec2(0, 1000), Sqr.GetPosition());
            
            addEventListener(Event.ENTER_FRAME, OnLive);
        }
        
        public function OnLive (e:Event): void 
        {
            
            _world.Step(1 / 30, 10, 10);
            
            for (var i:Number = 0; i < _sprites.length; i++)
            {
                _sprites[i].x = _bodies[i].GetPosition().x * RATIO;
                _sprites[i].y = _bodies[i].GetPosition().y * RATIO;
 
            }
        }
        
    }
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2014, 23:39
Ответы с готовыми решениями:

Движение объекта
Здрасти. Что значит .moveLeft = true;?

Движение объекта по условию
Подскажите где тут ошибка я хочу что бы движение выполнялось при условии опреденных координат...

Движение объекта в ActionScript
Помогите пожалуйста создать движение какого-нибудь объекта (например круга) с помощью ActionScript.

Движение объекта по окружности
есть объект circle2 с начальными координатами circle2.x = 250; circle2.y = 150; как заставить этот...

создать движение объекта
помогите создать движение код я написал но не могу сделать чтобы объект двигался равнозамедленно...

3
GreenForest
50 / 42 / 25
Регистрация: 05.12.2013
Сообщений: 275
03.01.2014, 14:44  [ТС] 2
Проблема исправлена.
0
TanaTiX
Модератор
2807 / 1664 / 169
Регистрация: 19.02.2011
Сообщений: 6,102
Завершенные тесты: 2
03.01.2014, 15:27 3
GreenForest, а нет желания поделиться с общественностью? Может кому-то понадобится.
0
GreenForest
50 / 42 / 25
Регистрация: 05.12.2013
Сообщений: 275
03.01.2014, 19:23  [ТС] 4
Лучший ответ Сообщение было отмечено TanaTiX как решение

Решение

TanaTiX, просто не заполнил вектор, вот и все.

ActionScript 3
1
2
            _sprites.push(content);
            _bodies.push(body);
1
03.01.2014, 19:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2014, 19:23

Движение объекта в сторону поворота
Есть машинка. Она должна взаимодействовать с клавиатурой и при нажатие w\s\a\d должна совершать...

Движение объекта в сторону поворота
Есть картинка (мувиклип), у неё рандомно задаётся угол поворота, как сделать как чтобы мувик...

Движение объекта с привязкой к текущему времени
Простите, если, что... не так давно работаю с этим языком. Моя задача - по горизонту движется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.