วันจันทร์ที่ 29 สิงหาคม พ.ศ. 2554
From lesson 1 to lesson 17 It so long ):
package
{
import Box2D.Collision.b2AABB;
import Box2D.Collision.b2Bound;
import Box2D.Collision.Shapes.b2PolygonDef;
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.b2World;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author ... ney
*/
public class NEY extends MovieClip
{
protected var _world:b2World;
public static const RATIO:Number = 40;
private var _fallingCrate:b2Body;
public function NEY()
{
setupWorld();
createWallsAndFloor();
addACrate();
setupDebugDraw();
addEventListener(Event.ENTER_FRAME, newFrameEvent);
}
private function setupDebugDraw():void
{
var spriteToDrawOn:Sprite = new Sprite();
addChild(spriteToDrawOn);
var artistForHire:b2DebugDraw = new b2DebugDraw();
artistForHire.m_sprite = spriteToDrawOn;
artistForHire.m_drawScale = RATIO;
artistForHire.SetFlags(b2DebugDraw.e_shapeBit);
artistForHire.m_lineThickness = 2.0;
artistForHire.m_fillAlpha = 0.6;
_world.SetDebugDraw(artistForHire);
}
private function newFrameEvent(e:Event):void
{
_world.Step(1.0 / 30.0, 10);
trace("Falling crate is at " + _fallingCrate.GetPosition().x + ", " + _fallingCrate.GetPosition().y);
}
private function addACrate():void
{
var fallingCrateDef:b2PolygonDef = new b2PolygonDef();
fallingCrateDef.SetAsBox(25 / RATIO, 25 / RATIO);
fallingCrateDef.friction = 0.8;
fallingCrateDef.restitution = 0.3;
fallingCrateDef.density = 0.7;
var fallingBodyDef:b2BodyDef = new b2BodyDef();
fallingBodyDef.position.Set(250 / RATIO, -30 / RATIO);
fallingBodyDef.angle = 30 * Math.PI / 180;
_fallingCrate = _world.CreateBody(fallingBodyDef);
_fallingCrate.CreateShape(fallingCrateDef);
_fallingCrate.SetMassFromShapes();
}
private function createWallsAndFloor():void
{
var bigLongShapeDef:b2PolygonDef = new b2PolygonDef();
bigLongShapeDef.vertexCount = 4;
b2Vec2(bigLongShapeDef.vertices[0]).Set(0 / RATIO, 0 / RATIO);
b2Vec2(bigLongShapeDef.vertices[1]).Set(550 / RATIO, 0 / RATIO);
b2Vec2(bigLongShapeDef.vertices[2]).Set(550 / RATIO, 10 / RATIO);
b2Vec2(bigLongShapeDef.vertices[3]).Set(0 / RATIO, 10 / RATIO);
bigLongShapeDef.friction = 0.5;
bigLongShapeDef.restitution = 0.3;
bigLongShapeDef.density = 0.0;
var floorBodyDef:b2BodyDef = new b2BodyDef();
floorBodyDef.position.Set(0 / RATIO, 390 / RATIO);
var floorBody:b2Body = _world.CreateBody(floorBodyDef);
floorBody.CreateShape(bigLongShapeDef);
floorBody.SetMassFromShapes();
trace ("My world now has" + _world.m_bodyCount + "bodies in it");
var tallSkinnyShapeDef:b2PolygonDef = new b2PolygonDef();
tallSkinnyShapeDef.SetAsBox(5 / RATIO, 195 / RATIO);
tallSkinnyShapeDef.friction = 0.5;
tallSkinnyShapeDef.restitution = 0.3;
tallSkinnyShapeDef.density = 0.0;
var wallBodyDef:b2BodyDef = new b2BodyDef();
wallBodyDef.position.Set(5 / RATIO, 195 / RATIO);
var leftWall:b2Body = _world.CreateBody(wallBodyDef);
leftWall.CreateShape(tallSkinnyShapeDef);
leftWall.SetMassFromShapes();
wallBodyDef.position.Set(545 / RATIO, 195 / RATIO);
var rightWall:b2Body = _world.CreateBody(wallBodyDef);
rightWall.CreateShape(tallSkinnyShapeDef);
rightWall.SetMassFromShapes();
trace ("My world now has" + _world.m_bodyCount + "bodies in it");
}
private function setupWorld():void
{
var universeSize:b2AABB = new b2AABB();
universeSize.lowerBound.Set( -3000 / RATIO, -3000 / RATIO);
universeSize.upperBound.Set(3000 / RATIO, 3000 / RATIO);
var gravity:b2Vec2 = new b2Vec2(0, 10);
var ignoreSleeping:Boolean = true;
_world = new b2World(universeSize, gravity, ignoreSleeping);
trace ("My world has" +_world.GetBodyCount() +"bodies in it!");
}
}
}
นี่คือ code ที่ลองเขียนไปพร้อมกับ tutorial ในขั้นแรกจะเป็นการสร้าง world กำหนดค่า pixel / meter กำหนดค่าแรงโน้มถ่วง ต่อมาจะเป็นการสร้าง wall และตัว body โดยการ definition ค่าต่างๆเช่น shape,density, friction และ restriction เมื่อได้วัตถุแล้วจะเป็นการกำหนดจุดตกต่างๆโดยการกำหนดในแกน x,y ส่วน background ด้านหลังของงานนั้นอยู่ในส่วนของโปรแกรม flash cs5 ที่ลองมั่วๆเอาเพราะไม่เคยใช้มาก่อน (:
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)



ไม่มีความคิดเห็น:
แสดงความคิดเห็น