Estamos recebendo censura na TV na internet estamos sendo perseguidos, neste site fiz uma coletania de videos que explica os últimos acontecimentos na qual devemos lutar pelos nossos direitos que estão sendo usurpados por invasores estrangeiros. PT não é brasileiro! Sua bandeira é do comunismo, suas táticas são de guerrilha, devemos nor unir contra esse mal e sumir com esse partido o mais rápido possível...
sexta-feira, 14 de março de 2014
0
comentários
Creation of a Box2D hook like the one seen on iOS Mikey Hooks game
Você já jogou Mikey Hooks? É um excelente game de plataforma, onde o herói pode disparar ganchos e saltar sobre picos, buracos e monstro ... e, obviamente, o jogo é muito mais do que isso, mas uma espécie de gancho com Box2D.
Source: https://drive.google.com/file/d/0B6NNc-9vZJw9UnVaOWZVTy1Ja28
Fonte: http://www.emanueleferonato.com/2013/09/10/creation-of-a-box2d-hook-like-the-one-seen-on-ios-mikey-hooks-game/
Cada vez que você clicar em um corpo estático (digamos que uma pedra), você cria uma joint distância entre um corpo dinâmico (digamos o herói) e o corpo estático.
Mantendo o botão esquerdo do mouse apertado irá retroceder o gancho, a distância é encurtada, dando-lhe um efeito de "Bionic Commando".
Liberando o botão do mouse irá destruir a articulação e você será capaz de disparar um outro gancho.
Desta forma, você pode balançar ao pela plantaforma
Aqui está o código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
public class Main extends Sprite {
private var world:b2World=new b2World(new b2Vec2(0,10),true);
private var worldScale:Number=30;
private var hero:b2Body;
private var distanceJoint:b2DistanceJoint;
private var isHooked:Boolean=false;
public function Main() {
// this is the ground
addBox(320,480,640,20,b2Body.b2_staticBody);
// let's add some random stuff
for (var i:Number=1; i<=12; i++) {
addBox(Math.random()*600+20,Math.random()*300,Math.random()*30+15,Math.random()*30+15,b2Body.b2_staticBody);
}
// and finally the hero
hero=addBox(320,460,20,20,b2Body.b2_dynamicBody);
addEventListener(Event.ENTER_FRAME,update);
stage.addEventListener(MouseEvent.MOUSE_DOWN,fireHook);
stage.addEventListener(MouseEvent.MOUSE_UP,releaseHook);
debugDraw();
}
private function fireHook(e:MouseEvent):void {
// when firing the hook, let's remove old joints, if any
if (distanceJoint) {
world.DestroyJoint(distanceJoint);
}
// checking the body under the mouse
world.QueryPoint(queryCallback,new b2Vec2(mouseX/worldScale,mouseY/worldScale));
}
private function queryCallback(fixture:b2Fixture):Boolean {
var touchedBody:b2Body=fixture.GetBody();
if (touchedBody.GetType()==b2Body.b2_staticBody) {
// if I have a body under the mouse, I create a distance joint between the hero and mouse position
var distanceJointDef:b2DistanceJointDef=new b2DistanceJointDef();
distanceJointDef.Initialize(hero,touchedBody,hero.GetWorldCenter(),new b2Vec2(mouseX/worldScale,mouseY/worldScale));
distanceJointDef.collideConnected=true;
distanceJoint=world.CreateJoint(distanceJointDef) as b2DistanceJoint;
isHooked=true;
}
return false;
}
private function releaseHook(e:MouseEvent):void {
// if I release the mouse, I destroy the distance joint
if (distanceJoint) {
world.DestroyJoint(distanceJoint);
}
}
private function manageHook():void{
// as long as the hook is active, I shorten a bit joint distance
if (isHooked) {
// BODY MUST BE AWAKE!!!!!!
hero.SetAwake(true)
distanceJoint.SetLength(distanceJoint.GetLength()*0.99);
}
}
private function addBox(pX:Number,pY:Number,w:Number,h:Number,bodyType:Number):b2Body {
var bodyDef:b2BodyDef=new b2BodyDef();
bodyDef.position.Set(pX/worldScale,pY/worldScale);
bodyDef.type=bodyType;
var polygonShape:b2PolygonShape=new b2PolygonShape();
polygonShape.SetAsBox(w/2/worldScale,h/2/worldScale);
var fixtureDef:b2FixtureDef=new b2FixtureDef();
fixtureDef.shape=polygonShape;
fixtureDef.density=1;
fixtureDef.restitution=0.4;
fixtureDef.friction=0.5;
var body:b2Body=world.CreateBody(bodyDef);
body.CreateFixture(fixtureDef);
return body;
}
private function debugDraw():void {
var debugDraw:b2DebugDraw=new b2DebugDraw();
var debugSprite:Sprite=new Sprite();
addChild(debugSprite);
debugDraw.SetSprite(debugSprite);
debugDraw.SetDrawScale(worldScale);
debugDraw.SetFlags(b2DebugDraw.e_shapeBit|b2DebugDraw.e_jointBit);
debugDraw.SetFillAlpha(0.5);
world.SetDebugDraw(debugDraw);
}
private function update(e:Event):void {
world.Step(1/30, 10, 10);
manageHook();
world.ClearForces();
world.DrawDebugData();
}
}
}
|
Fonte: http://www.emanueleferonato.com/2013/09/10/creation-of-a-box2d-hook-like-the-one-seen-on-ios-mikey-hooks-game/
Assinar:
Postagens (Atom)