Powered By Blogger

วันจันทร์ที่ 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 ที่ลองมั่วๆเอาเพราะไม่เคยใช้มาก่อน (:

วันอาทิตย์ที่ 21 สิงหาคม พ.ศ. 2554

My work lesson#8




สามารถดู clip เรื่องของการสร้างขอบเขตความกว้างของงานได้ที่บล๊อกของสไปร์ทครับ (:

http://sprite-zaa.blogspot.com/

Box2D new version

http://sourceforge.net/projects/box2dflash/files/box2dflash/Box2DFlashAS3_2.0.2/Box2DFlashAS3_2.0.2_.zip/download

เนื่องจากตัวเก่าขาด Source code ไปบางตัวตัวนี่เป็นตัวใหม่ที่ผมหาเจอในตอนนี้มี source code ค่อนข้างมากพอสมควร ;D

lesson #8

Units

Flash : Everything's in pixel
ex. mySprite.x = 200;
      mySprite.y = 400;
My Sprite will be at 200,400 on screen

Box2D : Everything's in meters
ex. myBody.x = 5.0
     myBody.y = 8.0
My physic body will be at . . .. . on screen . I don't know answer now because I don't know what does 1 meter equal in pixel.

Ans . .. . We can define ratio of pixel to meter in Program.

ในส่วนของ lesson 8 จะกล่าวถึงการบอกให้ทราบถึงข้อกำหนดหน่วยของข้อมูลต่อตัวโปรแกรมที่ใช้โดย Flash จะให้ในหน่วยของ pixel แต่ Box2D จะใช้ meter เป็นการแสดงผลข้อมูล แต่ Box2Dจำเป็นต้องใช้ Flash ในการแสดงผลดังนั้นจึงต้องมีการกำหนดอัตราส่วนของ pixel และ meter ขึ้นมาในโปรแกรมโดยใช้คำสั่งว่า  Public Static const RATIO:Number = 40;  ตัวเลขด้านหลังแล้วแต่จะกำหนด

วันอาทิตย์ที่ 14 สิงหาคม พ.ศ. 2554

Tutorial Box2D lesson 4&5


Lesson 1.4: Understanding Box2D
Totally different units

-Flash uses pixels, Box2D uses meter
-Flash uses degrees, Box2D uses radians



Lesson 1.5: The kinda long and boring lesson on setting everything up
1. Start out project in FlashDevelop

2. Create our .fla file
3. Link to our Box2D libraries


You can download FlashDevelop and Box2D on Sprite blog (http://sprite-zaa.blogspot.com/)


และจากที่ได้ไปค้นหาข้อมูลมาเพิ่มเติมนอกจากจะใช้ FlashDevelop คู่กับ Box2D แล้วยังสามารถใช้ Flash Actionscript3.0 กับ Box2D ได้อีกด้วย
ที่มา http://9note.blogspot.com/search/label/Box2D

Ex Factorial C++

#include<stdAfx.h>                           <<< เลือกใช้แฟ้มข้อมูลที่ต้องการ
#include<conio.h>                            <<< เนื่องจาก function ที่ใช้งานประกาศไว้ที่แฟ้มเหล่านี้
int main()                                          <<< เริ่ม main function
{                                                    
int n=1;                                    <<< ประกาศตัวแปร local
int i;                                          <<< ประกาศตัวแปร local
printf("Factorial"" ");                 <<< ให้พิมพ์คำว่า "Factorial"
scanf("%i",&i);                         <<< รับและส่งค่าเข้าไปในตัวแปร i
while(i>1)                                <<< ระกาศเงื่อนไขของการน loop while
{                                             <<< เข้าสู่ Function while
n=n*i;                             <<< ประกาศเงื่อนไขของ Factorial ของ Function While                
i--;                                 <<< กำหนดค่าที่ใช้ในการหยุดการวน loop (i--,i=i-1)
}                                            <<< สิ้นสุดการทำงานของ Function while
printf("ans factorial=%i",n);     <<< print คำว่า ans factorial และต่อด้วยผลลัพธ์หรือค่า n
scanf("  ");                                <<< ใช้เพื่อหยุดหน้าจอโปรแกรม =.,=
}                                                    


จากการทำงานของ code C++ ข้างต้นใช้หลักการทำงานของการกำหนดค่าตัวแปรที่จำเป็นต่อการหาค่า Factorial คือ int n=1 (เพื่อใช้เป็นตัวเก็บค่าของผลลัพธ์) สาเหตุเนื่องมาจากการคำนวน Factorial คือการคูณด้วยจำนวนข้างต้น(i)ลบ 1 ไปเรื่อยๆจนกว่าค่า i จะมากกว่า 1 หรือ factorial i = n*i(n*(i-1))(n*(i-2))(n*(i-3)) .. . เมื่อ i >1 จะเป็นเท็จและค่า n จะหลุดออกจาก loop ในที่สุด






วันจันทร์ที่ 1 สิงหาคม พ.ศ. 2554

Ex C++


เป็นการรันรูป * ให้เรียงกันเป็นรูป 3 เหลี่ยมโดยเรากำหนดตัวแปร a,b โดยที่ a มีค่าได้ไม่เกิน 5 แถว ส่วน b คือ column \n เป็นตัวแสดงถึงการขึ้นบรรทัดใหม่และเพิ่มค่าทีละ 1 เรื่อยๆ ใช้ scanf เป็นตัวรับค่าและใช้ return 0 เป็นตัวส่งค่ากลับ

วันอาทิตย์ที่ 31 กรกฎาคม พ.ศ. 2554

Air Mouse- iPhone/Touch-Control Your Computer Wirelessly!



นี่คือ app ที่เรียกว่า Air mouse คือเป็นการที่ใช้ iphone แทนการใช้ mouse ธรรมดาๆ สามารถนำมาใช้ในการนำเสนองานได้ก็ดูดีไปอีกแบบ (:

The Best Flashlight App for iPhone 4: Light-O-Matic


เป็น app ไฟฉายของ iphone โดย app นี้เหมือนจะใช้เพียงการควบคุมให้ Flash กล้องทำงานต่อเนื่องและยังมีอีกหลายอย่างเช่น ปรับความเร็วของเสียงและส่งรหัส Morse

Android, iPhone OS and a Hexapod Robot



เป็น app ที่ใช้ควบคุมหุ่นยนต์โดยสามารถสั่งได้หลายคำสั่งเช่น หมุนหัว(กล้อง) หรือจะให้ขยับขาทั้ง 6 ขาแบบแยกกัน

iRemoco The Remote Control Helicopter for iPhone iPod & iPad



เป็น app ที่ใช้ control เฮลิคอปเตอร์ RC โดยตัว app จะใช้การควบคุมแบบ Remote control ของจริงจึงทำให้สะดวกต่อการเล่น

Pet Pal - iPhone application for animal lovers - by Gameloft



นี่เป็น app ที่ใช้ในการป้อนคำสั่งให้สัตว์เลี้ยงทำตาม โดยการส่งคลื่นเข้าสู่สมองของสัตว์ แต่ app นี้ยังเป็น app ที่ยังอยู่ในขั้นทดลอง (:

วันอาทิตย์ที่ 24 กรกฎาคม พ.ศ. 2554

LynxEngine : iPhone 2D Physics Test



Physics & Iphone

Gravity Collector - Level-Editor - powered by AndEngine



Physics & Android เป็นเกมแนวให้ลูกโตไปกินลูกเล็กด้วยการควมคุมแรงโน้มถ่วง (:

Kinect - 3D body tracking with physics



เหมือนคลิปนี้จะใช้กันหลายคน แต่ผมว่ามันก็เจ๋งจิงๆอ่ะ (:
จากที่ดูๆมาอันนี้ตัวละครในเกมเคลื่อนไหวได้คล้ายคนเล่นมากสุดแล้ว

Kinect 2D physics: I am Iron Man



I am Iron man  haha eiseis :)

Kinect Projection mapping with box2D physics



นี่คือคลิปแสดงการรวมกันของ Kinect และ Box2D ก็เจ๋งไปอีกแบบ ;D

วันจันทร์ที่ 11 กรกฎาคม พ.ศ. 2554

iPhone Blower Real Air AMAZING APP #2 . MUST SEE!!! AND BELIEVE!!!!



App แปลกอีกหนึ่ง app เกิดมาเพิ่งเคยเห็นว่ามือถือทำได้ (- -")

iPhone App makes popcorn!



นี่เป็นหนึ่งใน App แปลกๆของ iphone เท่าที่เห็นไม่ค่อยจะเชื่่อสักเท่าไหร่ว่าทำได้จริง (= =")

วันอาทิตย์ที่ 10 กรกฎาคม พ.ศ. 2554

เราก็หาตัวอย่าง เกมจาก Box2D มาก็เยอะแล้วแต่เรายังไม่รู้วิธีใช้เลย
http://www.kerp.net/box2d/ นี่คือคู่มือพื้นฐานของ โปรแกรม Box2D
เริ่มตั้งแต่ Basic พื้นฐาน จนไปถึงการใช้ระดับสูง

darkSMASH Physics Test



เกม DarkSmash เป็นเกมผจญภัยคล้าย Sonic แต่ผมว่าใช่ Sonic เลย ;P

practice of openFrameworks - OpenCV & Box2D



นี่เป็นอีก App ที่น่าสนใจโดยใช้ OpenCV มาผสมกับ Box2D ดูแล้วค่อนข้างคล้าย หลักการ Kinect (:

Zoo Escape Walkthrough - Levels 1-20 - All Stars



Zoo escape เป็นเกมที่เราต้องช่วยให้สัตว์ออกมาจากกรงให้ได้ เป็นเกมที่ดูน่ารัก ;D

Box 2D - Crayon Physics Deluxe - Island 3



เกม Crayon Physics Deluxe เป็นเกมที่สร้างจาก Box2D โดยเป้าหมายของเกมคือการ เก็บดาว ในแต่ละด่านโดยเราสามารถวาดสิ่งของออกมา หรือ จะสร้างวาดเป็นเชือกก็ได้

Create-PC Gameplay HD




นี่คือเกม Create เป็นเกมคล้ายๆ Crazy machine แต่จะมีความหลากหลายของด่านมากกว่า ภาพจะสวยกว่า โดยในแต่ละด่านก็จะมีการกำหนดเป้าหมายมาให้ โดนยิ่งผ่านไปหลายๆด่านก็จะมีการปลดล๊อกของที่สามารถนำมาใช้เพื่อให้ผ่านด่านอื่นได้

GPU PhysX in Crazy Machines 2




เกม Crazy machine เป็นเกมใช้สมองเพื่อให้สิ่งของไปถึงจุดหมาย โดยเป้าหมายของแต่ละด่านก็จะต่างกันออกไป ยิ่งเลเวลเยอะๆยิ่งยากขึ้นเรื่อยๆ
http://www.vcharkarn.com/varticle/1806
นี่คือ Tutorial ของภาษา C,C++ (ค่อนข้าง งง)

Visual C++ 2010 Tutorial 1 - Hello World




นี่เป็นการสอนใช้ Visual C++   "Hello World" ;D
จากการที่เราได้ไปศึกษาเกี่ยวกับโปรแกรมที่ใช้ในการสร้างเกมเชิงฟิสิกส์มาแล้ว
โปรแกรมที่เราจะเลือกใช้คือโปรแกรม Box 2D ซึ่งดูแล้วน่าจะสะดวกในการทำงานมากที่สุด
โดยโปรแกรม Box 2D นั้นใช้ภาษา C++ และต้องใช้ผ่าน Visual C++ โดยสามารถดาวน์โหลดฟรีได้ http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express ส่วนนี่เป็นคู่มือการใช้งานพื้นฐานhttp://msdn.microsoft.com/en-us/library/ms235630(v=VS.100).aspx , http://elvis.rowan.edu/~kay/cpp/vc6_tutorial/ 

วันอาทิตย์ที่ 3 กรกฎาคม พ.ศ. 2554

http://9note.blogspot.com/2011/04/flash-box2d.html
http://apps.facebook.com/hungry_pig/
นี่เป็น โปรเจคหนึ่งที่น่าสนใจ ที่สร้างมาจาก Box2D
จากที่เราได้ไปหาตัวอย่างเกี่ยวกับ Physics Simulation มาแล้ว
ครวานี้เราจะมาศึกษาถึงโปรแกรมที่จะใช้ในการสร้างเกมที่เกี่ยวกับ Physics กันบ้าง
เช่น Farseer Physics engine, Chipmunk-2D Physics engine และ Box2D

วันจันทร์ที่ 27 มิถุนายน พ.ศ. 2554

Hi !!

I'm Prasird Phongprayoon. You can called me "Ney". Now I'm study at Darunsikkhalai school in M.5

This is my first blog. I'll use this blog for post about my project progress.
My project is about Physics simulation for 2D and 3D games

วันอาทิตย์ที่ 26 มิถุนายน พ.ศ. 2554

Phun - 2D physics sandbox

Bender 2.5 Destruction, physic simulation, game engine

Physics simulation

Sumotori Dreams - BEST GAME EVER

Game Maker Simple Physics Simulation

Havok Ragdoll Test

Game Physics in 3D Studio MAX

Water Fluid Physics Nvidia Demo 1

Domino Movie - Blender 3D Physics

BLENDER: Game Physics Test

Physics Sumulation

http://www.youtube.com/watch?v=WGf8UhBaeLc&feature=related
http://www.youtube.com/watch?v=jcHbgU0APdk&feature=related
http://www.youtube.com/watch?v=yjKt5JNR1dE&feature=related
http://www.youtube.com/watch?v=IBJh2n6Y9iM&feature=fvwrel
http://www.youtube.com/watch?v=QZD-O54FbMU&feature=related
http://www.youtube.com/watch?v=1QRLWrTXQhE
http://www.youtube.com/watch?v=hdFjYIKdkQk
http://www.youtube.com/watch?v=GK2Bukrmr4s
http://www.youtube.com/watch?v=hS9seZ_G6pU
http://www.youtube.com/watch?v=0H5g9VS0ENM