рдлреНрд▓реИрд╢ рдкрд░ рднреМрддрд┐рдХреАред AS3 рдкрд░ Nape рдореЗрдВ Ragdoll рдмрдирд╛рдПрдВ

рдЫрд╡рд┐

рдПрдХ рдлреНрд▓реИрд╢ рдкрд░ рднреМрддрд┐рдХреА рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдордВрдЪ рдкрд░ 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/swf

regdol nape рдкрд░

solverit.ru/swf2



рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рд╕рдорд╛рди рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рднреМрддрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рдеред рддреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрдВрддрд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



FlashDevelop рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд

solverit.ru/files/RagdollNape.zip



рдкреАрдПрд╕ рдмреЗрд╢рдХ, рдирдк рдЕрднреА рднреА рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред рдФрд░ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрд┐рд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдЙрдирдХреА рдХреНрд╖рдорддрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИред



All Articles