
рдПрдХ рдлреНрд▓реИрд╢ рдкрд░ рднреМрддрд┐рдХреА рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдордВрдЪ рдкрд░ 10 - 15 рд░реЗрдЬреНрдбреЛрд▓ (рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд░реЗрдЬреНрдбреЛрд▓ рдПрдХ рдЧреБрдбрд╝рд┐рдпрд╛ рд╣реИред рдорд╛рдирд╡ рд╢рд░реАрд░ рдХрд╛ рдирдХрд▓реА)ред рд▓реЛрдХрдкреНрд░рд┐рдп Box2D рдкрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрдпрд╛ рдХрд┐ Box2D рдпрд╣ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдереЛрдбрд╝рд╛ рд╕рд╛ Google рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ Nape () рдЗрдВрдЬрди рдорд┐рд▓рд╛ред рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдЕрдкрдиреЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╣рдм рдкрд░ рдирдк рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдПрдХ рд░реЗрдЬрдбреЙрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдФрд░ Box2D рдФрд░ Nape рдкрд░ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг, рд╕рд╛рде рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдбред
рдкрд░рд┐рдпреЛрдЬрдирд╛ FlashDevelop рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдФрд░ Nape рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рддреБрдЪреНрдЫ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
1. рд╕рдВрд╕рд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖рдгред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдбрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
public function Main(): void
{
new Boot();
тАж.........................
}
* This source code was highlighted with Source Code Highlighter .
public function Main(): void
{
new Boot();
тАж.........................
}
* This source code was highlighted with Source Code Highlighter .
рдирдкреЗ рдореЗрдВ рджреБрдирд┐рдпрд╛ рдХреЛ рддреАрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдпреВрдирд┐рдлрд╝реЙрд░реНрдорд╕реНрдкреЗрд╕ рдПрдХ рдРрд╕реА рджреБрдирд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЛ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред
рдпреВрдирд┐рдлрд╝реЙрд░реНрдордкреНрд▓реЗрд╕реНрдкреЗрд╕ рдПрдХ рдРрд╕реА рджреБрдирд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБрдПрдВ рд╕реЛ рдЬрд╛рддреА рд╣реИрдВ рдпрджрд┐ рдХреЛрдИ рдмрд▓ рдЙрди рдкрд░ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред
BruteSpace рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЛ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдмрд╕реЗ рдЖрдо рдпреВрдирд┐рдлрд╝реЙрд░реНрдорд╕реНрдкреЗрд╕ рд╣реИред рд╣рдо рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред
// .
var gravity:Vec2 = new Vec2(0, 250);
// . , .
var world:UniformSleepSpace = new UniformSleepSpace( new AABB(0,0, 800, 600), 25, gravity);
* This source code was highlighted with Source Code Highlighter .
// .
var gravity:Vec2 = new Vec2(0, 250);
// . , .
var world:UniformSleepSpace = new UniformSleepSpace( new AABB(0,0, 800, 600), 25, gravity);
* This source code was highlighted with Source Code Highlighter .
Box2D рдХреЗ рд╡рд┐рдкрд░реАрдд, Nape рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЫрд╡рд┐ рдХреЗ рдмреАрдЪ рдкреИрдорд╛рдирд╛ рдирд╣реАрдВ рд╣реИред рд╕рдм рдХреБрдЫ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдпрд╣ рджреБрдирд┐рдпрд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЕрдВрдд рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
2. рд╕реНрдерд┐рд░ рд╢рд░реАрд░ рдмрдирд╛рдПрдБред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рд╣реИ - рдпрд╣ рдкреГрдереНрд╡реА рд╣реИред
рдПрдХ рд╕реНрдерд┐рд░ рдордВрдЪ рдмрдирд╛рдПрдБ
рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╣рдо рдЖрдХрд╛рд░, рд╕реНрдерд╛рди, рдЧрддрд┐ рдФрд░ рд╢рд░реАрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ - рд╕реНрдерд┐рд░, рдЧрд▓рдд - рдЧрддрд┐рд╢реАрд▓) рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ
physObject = Tools.createBox(400, 500, 700, 20, 0, 0, 0, true , Material.Steel);
world.addObject(physObject); //
addChild(physObject.graphic); //
* This source code was highlighted with Source Code Highlighter .
physObject = Tools.createBox(400, 500, 700, 20, 0, 0, 0, true , Material.Steel);
world.addObject(physObject); //
addChild(physObject.graphic); //
* This source code was highlighted with Source Code Highlighter .
Nape рдореЗрдВ Default.Steel рдпрд╛ Material.Wood рдЬреИрд╕реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИред рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Box2D рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
3. рджреБрдирд┐рдпрд╛ рдХрд╛ рд╢реБрднрд╛рд░рдВрднред
рджреБрдирд┐рдпрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ ENTER_FRAME рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдпреВрдирд┐рдлрд╝реНрд▓реЗрд╕реЗрд╕реНрдкреЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЪрд░рдг () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
рд╣рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рд╕рдордп рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг 1 / 30.0)
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд╕реНрддреБ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреА - рдкреГрдереНрд╡реАред
4. рд░рд╛рдЧрдбреЛрд▓ рдмрдирд╛рдирд╛ред
рдпрд╣рд╛рдБ рдЧреБрдбрд╝рд┐рдпрд╛ рдХрд╛ рд╢рд░реАрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ

рдЧреБрдбрд╝рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рд░реАрд░рд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рднреМрддрд┐рдХ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдХреНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЬреЛ рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЫрд╡рд┐ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
public class Actor extends EventDispatcher
{
//
protected var _body:PhysObj;
// (, )
protected var _costume:DisplayObject;
public function Actor(myBody:PhysObj, myCostume:DisplayObject)
{
_body = myBody;
_costume = myCostume;
if (_body != null )
{
updateLook();
}
}
public function Update(): void
{
// , ,
if (!_body.sleep)
{
updateLook();
}
}
//
private function updateLook(): void
{
var PosX:Number = _body.px;
var PosY:Number = _body.py;
_costume.x = PosX * Main.SCALE;
_costume.y = PosY * Main.SCALE;
}
}
* This source code was highlighted with Source Code Highlighter .
public class Actor extends EventDispatcher
{
//
protected var _body:PhysObj;
// (, )
protected var _costume:DisplayObject;
public function Actor(myBody:PhysObj, myCostume:DisplayObject)
{
_body = myBody;
_costume = myCostume;
if (_body != null )
{
updateLook();
}
}
public function Update(): void
{
// , ,
if (!_body.sleep)
{
updateLook();
}
}
//
private function updateLook(): void
{
var PosX:Number = _body.px;
var PosY:Number = _body.py;
_costume.x = PosX * Main.SCALE;
_costume.y = PosY * Main.SCALE;
}
}
* This source code was highlighted with Source Code Highlighter .
рдЖрдЗрдП, рдХреНрд▓рд╛рд╕ рдПрдХреНрдЯрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рдорд╛рдирд╡ рд╢рд░реАрд░ рдХрд╛ "рд╣реЗрдб" рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
public class Head extends Actor
{
public var head:PhysObj;
[Embed(source = '../../../../lib/ragdol.swf' , symbol = 'Ragdoll' )]
public var _headSprite: Class;
public function Head(parent:DisplayObjectContainer , location:Point, dimension:Point, initVel:Point)
{
var radius:Number = dimension.y / 2;
// HEAD -------------------------------------------------------------------------------
var headSprite:Sprite = new _headSprite();
headSprite.scaleX = radius * 2 / headSprite.width;
headSprite.scaleY = radius * 2 / headSprite.height;
//
if (!Main.gebug) parent.addChild(headSprite);
//
head = Tools.createCircle(location.x, location.y, radius, 0, 0, 0, false , true , Main.RagdolMaterial);
//
Main.world.addObject(head);
parent.addChild(head.graphic);
//
super(head, headSprite);
}
}
* This source code was highlighted with Source Code Highlighter .
public class Head extends Actor
{
public var head:PhysObj;
[Embed(source = '../../../../lib/ragdol.swf' , symbol = 'Ragdoll' )]
public var _headSprite: Class;
public function Head(parent:DisplayObjectContainer , location:Point, dimension:Point, initVel:Point)
{
var radius:Number = dimension.y / 2;
// HEAD -------------------------------------------------------------------------------
var headSprite:Sprite = new _headSprite();
headSprite.scaleX = radius * 2 / headSprite.width;
headSprite.scaleY = radius * 2 / headSprite.height;
//
if (!Main.gebug) parent.addChild(headSprite);
//
head = Tools.createCircle(location.x, location.y, radius, 0, 0, 0, false , true , Main.RagdolMaterial);
//
Main.world.addObject(head);
parent.addChild(head.graphic);
//
super(head, headSprite);
}
}
* This source code was highlighted with Source Code Highlighter .
рд╢рд░реАрд░ рдХреЗ рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдЙрд╕реА рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдпрд╣рд╛рдВ рд╕рднреА рднрд╛рдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЙрдиреНрд╣реЗрдВ рддрд░рд╣ рддрд░рд╣ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ Ragdoll рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдкреВрд░реЗ рд╢рд░реАрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ред рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдВрдмрдВрдзред
public class Ragdol extends Actor
{
//
public var _actors:Array;
// .
private var pj:PivotJoint;
// . .
public var rost:Number = 200.0;
// . .
public function Ragdol(parent:DisplayObjectContainer , loc:Point, initVel:Point)
{
// . .
var maxBias:Number = 0.1;
var maxForce:Number = 1e+9;
// .
//
_actors.push( new Head(parent, new Point( head_x, head_y ), new Point(0, dhead), new Point(0, 0)));
_actors.push( new Torso1(parent, new Point( torso1_x, torso1_y ), new Point(ttorso, dtorso1), new Point(0, 0)));
_actors.push( new Torso2(parent, new Point( torso2_x, torso2_y ), new Point(ttorso, dtorso2), new Point(0, 0)));
_actors.push( new Torso3(parent, new Point( torso3_x, torso3_y ), new Point(ttorso, dtorso3), new Point(0, 0)));
_actors.push( new ArmLup(parent, new Point( l_arm_up_x, l_arm_up_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new ArmLmid(parent, new Point( l_arm_low_x, l_arm_low_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new ArmRup(parent, new Point( r_arm_up_x, r_arm_up_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new ArmRmid(parent, new Point( r_arm_low_x, r_arm_low_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new LegLup(parent, new Point(l_leg_up_x, l_leg_up_y), new Point(tleg, dleg), new Point(0, 0)));
_actors.push( new LegLlow(parent, new Point(l_leg_low_x, l_leg_low_y), new Point(tleg, dleg), new Point(0, 0)));
_actors.push( new LegRup(parent, new Point(r_leg_up_x, r_leg_up_y), new Point(tleg, dleg), new Point(0, 0)));
_actors.push( new LegRlow(parent, new Point(r_leg_low_x, r_leg_low_y), new Point(tleg, dleg), new Point(0, 0)));
//
//Head to torso1
pj = new PivotJoint(_actors[0].head, _actors[1].torso1, new Vec2(head_x, head_y + dhead/2));
pj.maxBias = maxBias;
pj.maxForce = maxForce;
Main.world.addConstraint(pj);
// .
// . .
super( null , null );
}
}
* This source code was highlighted with Source Code Highlighter .
public class Ragdol extends Actor
{
//
public var _actors:Array;
// .
private var pj:PivotJoint;
// . .
public var rost:Number = 200.0;
// . .
public function Ragdol(parent:DisplayObjectContainer , loc:Point, initVel:Point)
{
// . .
var maxBias:Number = 0.1;
var maxForce:Number = 1e+9;
// .
//
_actors.push( new Head(parent, new Point( head_x, head_y ), new Point(0, dhead), new Point(0, 0)));
_actors.push( new Torso1(parent, new Point( torso1_x, torso1_y ), new Point(ttorso, dtorso1), new Point(0, 0)));
_actors.push( new Torso2(parent, new Point( torso2_x, torso2_y ), new Point(ttorso, dtorso2), new Point(0, 0)));
_actors.push( new Torso3(parent, new Point( torso3_x, torso3_y ), new Point(ttorso, dtorso3), new Point(0, 0)));
_actors.push( new ArmLup(parent, new Point( l_arm_up_x, l_arm_up_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new ArmLmid(parent, new Point( l_arm_low_x, l_arm_low_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new ArmRup(parent, new Point( r_arm_up_x, r_arm_up_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new ArmRmid(parent, new Point( r_arm_low_x, r_arm_low_y ), new Point(tarm, darm), new Point(0, 0)));
_actors.push( new LegLup(parent, new Point(l_leg_up_x, l_leg_up_y), new Point(tleg, dleg), new Point(0, 0)));
_actors.push( new LegLlow(parent, new Point(l_leg_low_x, l_leg_low_y), new Point(tleg, dleg), new Point(0, 0)));
_actors.push( new LegRup(parent, new Point(r_leg_up_x, r_leg_up_y), new Point(tleg, dleg), new Point(0, 0)));
_actors.push( new LegRlow(parent, new Point(r_leg_low_x, r_leg_low_y), new Point(tleg, dleg), new Point(0, 0)));
//
//Head to torso1
pj = new PivotJoint(_actors[0].head, _actors[1].torso1, new Vec2(head_x, head_y + dhead/2));
pj.maxBias = maxBias;
pj.maxForce = maxForce;
Main.world.addConstraint(pj);
// .
// . .
super( null , null );
}
}
* This source code was highlighted with Source Code Highlighter .
5. рд░реЗрдЬреНрдбреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧред
рд╕рд░рд▓рддрдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВред
private function onClick(e:MouseEvent): void
{
_ragdolActors.push( new Ragdol( this , new Point(mouseX, mouseY), new Point(0, 0)));
}
* This source code was highlighted with Source Code Highlighter .
private function onClick(e:MouseEvent): void
{
_ragdolActors.push( new Ragdol( this , new Point(mouseX, mouseY), new Point(0, 0)));
}
* This source code was highlighted with Source Code Highlighter .
рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд░реЗрдЬрдбреЛрд▓ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдбреЗрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
private function update(e:Event): void
{
//
world.step(timeStep);
//
for ( var i: int = 0; i < _ragdolActors.length; i++ ) {
for ( var r: int = 0; r < _ragdolActors[i]._actors.length; r++ ) {
_ragdolActors[i]._actors[r].Update();
}
}
}
* This source code was highlighted with Source Code Highlighter .
private function update(e:Event): void
{
//
world.step(timeStep);
//
for ( var i: int = 0; i < _ragdolActors.length; i++ ) {
for ( var r: int = 0; r < _ragdolActors[i]._actors.length; r++ ) {
_ragdolActors[i]._actors[r].Update();
}
}
}
* This source code was highlighted with Source Code Highlighter .
рд░рд╛рдЧрдбреЛрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:
Box2D рдкрд░ regdol
solverit.ru/swfregdol nape рдкрд░
solverit.ru/swf2рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рд╕рдорд╛рди рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рднреМрддрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рдеред рддреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрдВрддрд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
FlashDevelop рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд
solverit.ru/files/RagdollNape.zipрдкреАрдПрд╕ рдмреЗрд╢рдХ, рдирдк рдЕрднреА рднреА рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред рдФрд░ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрд┐рд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдЙрдирдХреА рдХреНрд╖рдорддрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИред