WEB开发网
开发学院图形图像Flash Pumpkin Story prototype 阅读

Pumpkin Story prototype

 2009-10-18 00:00:00 来源:WEB开发网   
核心提示:If you notice, it’s similar to an artillery game (like Bloons) with the “only” difference you are the bullet.This opens some interesting gamep

If you notice, it’s similar to an artillery game (like Bloons) with the “only” difference you are the bullet.

This opens some interesting gameplay options, so interesting I am going to make a similar game, but I’ll start talking about it during next days.

Meanwhile, this is the script:

package {
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import Box2D.Dynamics.*;
 import Box2D.Collision.*;
 import Box2D.Collision.Shapes.*;
 import Box2D.Common.Math.*;
 public class HelloWorld extends Sprite {
  public var m_world:b2World;
  public var m_iterations:int=10;
  public var m_timeStep:Number=1.0/30.0;
  public var the_arrow:arrow=new arrow();
  public var the_arrow_angle:Number;
  public var my_canvas:Sprite = new Sprite();
  public var deg_to_rad:Number=0.0174532925;
  public var rad_to_deg:Number=57.2957795;
  public var charging:Boolean=false;
  public var power:int=0;
  public var impulse:Boolean=false;
  public function HelloWorld() {
   addChild(the_arrow);
   addChild(my_canvas);
   var worldAABB:b2AABB = new b2AABB();
   worldAABB.lowerBound.Set(-100.0, -100.0);
   worldAABB.upperBound.Set(100.0, 100.0);
   var gravity:b2Vec2=new b2Vec2(0.0,10.0);
   var doSleep:Boolean=true;
   m_world=new b2World(worldAABB,gravity,doSleep);
   // debug draw
   var m_sprite:Sprite;
   m_sprite = new Sprite();
   addChild(m_sprite);
   var dbgDraw:b2DebugDraw = new b2DebugDraw();
   var dbgSprite:Sprite = new Sprite();
   m_sprite.addChild(dbgSprite);
   dbgDraw.m_sprite=m_sprite;
   dbgDraw.m_drawScale=30;
   dbgDraw.m_alpha=1;
   dbgDraw.m_fillAlpha=0.5;
   dbgDraw.m_lineThickness=1;
   dbgDraw.m_drawFlags=b2DebugDraw.e_shapeBit;
   m_world.SetDebugDraw(dbgDraw);
   // end debug draw
   // Vars used to create bodies
   var body:b2Body;
   var bodyDef:b2BodyDef;
   var boxDef:b2PolygonDef;
   var circleDef:b2CircleDef;
   // Add ground body
   bodyDef = new b2BodyDef();
   bodyDef.position.Set(10, 14);
   boxDef = new b2PolygonDef();
   boxDef.SetAsBox(30, 1);
   boxDef.friction=0.3;
   boxDef.density=0;
   body=m_world.CreateBody(bodyDef);
   body.CreateShape(boxDef);
   body.SetMassFromShapes();
   //
   bodyDef = new b2BodyDef();
   bodyDef.position.Set(5, 5);
   circleDef = new b2CircleDef();
   circleDef.radius=0.5;
   circleDef.density=1.0;
   circleDef.friction=0.5;
   circleDef.restitution=0.2;
   bodyDef.userData = new Sprite();
   bodyDef.userData.name="Player";
   body=m_world.CreateBody(bodyDef);
   body.CreateShape(circleDef);
   body.SetMassFromShapes();
   //
   addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
   stage.addEventListener(MouseEvent.MOUSE_UP, shoot);
   stage.addEventListener(MouseEvent.MOUSE_DOWN,charge);
 
  }
  public function Update(e:Event):void {
   m_world.Step(m_timeStep, m_iterations);
   for (var bb:b2Body = m_world.m_bodyList; bb; bb = bb.m_next) {
    if (bb.GetUserData()!=null) {
     the_arrow.x=bb.m_userData.x=bb.GetPosition().x*30;
     the_arrow.y=bb.m_userData.y=bb.GetPosition().y*30;
     var dist_x=the_arrow.x-mouseX;
     var dist_y=the_arrow.y-mouseY;
     the_arrow_angle=Math.atan2(- dist_y,- dist_x);
     the_arrow.rotation=the_arrow_angle*rad_to_deg;
     if (charging) {
      power++;
      if (power>=120) {
       power-=120;
      }
      my_canvas.graphics.clear();
      my_canvas.graphics.lineStyle(3,0x000000,0.5);
      draw_arc(my_canvas,the_arrow.x=bb.m_userData.x=bb.GetPosition().x*30,the_arrow.y=bb.m_userData.y=bb.GetPosition().y*30,20,270,270+power*3,1);
     }
     if (impulse) {
      bb.ApplyImpulse(new b2Vec2(Math.cos(the_arrow_angle)*power/4, Math.sin(the_arrow_angle)*power/4),bb.GetWorldCenter());
      impulse=false;
      power=0;
     }
    }
   }
  }
  public function charge(e:MouseEvent):void {
   charging=true;
  }
  public function shoot(e:MouseEvent):void {
   charging=false;
   my_canvas.graphics.clear();
   impulse=true;
  }
  public function draw_arc(movieclip,center_x,center_y,radius,angle_from,angle_to,precision):void {
   var angle_diff=angle_to-angle_from;
   var steps=Math.round(angle_diff*precision);
   var angle=angle_from;
   var px=center_x+radius*Math.cos(angle*deg_to_rad);
   var py=center_y+radius*Math.sin(angle*deg_to_rad);
   movieclip.graphics.moveTo(px,py);
   for (var i:int=1; i<=steps; i++) {
    angle=angle_from+angle_diff/steps*i;
    movieclip.graphics.lineTo(center_x+radius*Math.cos(angle*deg_to_rad),center_y+radius*Math.sin(angle*deg_to_rad));
   }
  }
 
 
 }
}

1 2  下一页

Tags:Pumpkin Story prototype

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接