dark gdk and box2d rotation not working right

Started by
-1 comments, last by Splinter1991 11 years ago

my code:


#include "DarkGDK.h"
#include "Box2D/Box2D.h"
#include <time.h>

float face1X,face1Y, face2X,face2Y,a;

bool Click = false;

    char SCREEN_VALUE[50] = "";


void DarkGDK ( void )
{

    dbSetWindowTitle("Phy");

    dbSyncOn   ( );
    dbSyncRate ( 60 );
    dbBackdropOn();

    b2Vec2 gravity(0.0f,50.0f);
    bool doSleep = false;
    b2World world(gravity);
    
    b2BodyDef groundBodyDef;
    groundBodyDef.position.Set(0.0f,600.0f);
    b2Body* groundBody = world.CreateBody(&groundBodyDef);
    b2PolygonShape groundBox;
    groundBox.SetAsBox(600.0f, 10.0f);
    groundBody->CreateFixture(&groundBox, 0.0f);
    //////////////////////////////////////////////////////////

    b2BodyDef myBodyDef;
    myBodyDef.type = b2_dynamicBody;//this will be a dynamic body
  myBodyDef.position.Set(200, 20); //set the starting position
  myBodyDef.angle = 0; //set the starting angle
 

  b2Body* dynamicBody = world.CreateBody(&myBodyDef);
  b2PolygonShape boxShape;
  boxShape.SetAsBox(50,50);
 
  b2FixtureDef boxFixtureDef;
  boxFixtureDef.shape = &boxShape;
  boxFixtureDef.density = 10;
  boxFixtureDef.friction = 1.3;
  dynamicBody->CreateFixture(&boxFixtureDef);

    // next

            b2BodyDef bodyDef1;
    bodyDef1.type = b2_dynamicBody;
    bodyDef1.position.Set(260.0f, 100.0f);
    b2Body* body1 = world.CreateBody(&bodyDef1);

    b2PolygonShape dynamicBox1;
    dynamicBox1.SetAsBox(50.0f, 50.0f);

    b2FixtureDef fixtureDef1;
    fixtureDef1.shape = &dynamicBox1;
    fixtureDef1.density = 10;
    fixtureDef1.friction = 1.3f;

    body1->CreateFixture(&fixtureDef1);
    ///////////////////////////////

    float32 timeStep = 1.0f / 60.0f;
    int32 velocityIterations = 6;
    int32 positionIterations = 2;





    dbSetDisplayMode(700,700,32);


    dbLoadImage ("file\\back.png",1);
    dbLoadImage ("file\\1.png",2);



            dbDrawSpritesFirst();

    while ( LoopGDK ( ) )
    {
        

    world.Step(timeStep, velocityIterations, positionIterations);
    b2Vec2 position = dynamicBody->GetPosition();
    float32 angle = dynamicBody->GetAngle();

    b2Vec2 position1 = body1->GetPosition();
    float32 angle1 = body1->GetAngle();

    
    face1X = position.x;
    face1Y = position.y;
    face2X = position1.x;
    face2Y = position1.y;


            strcpy(SCREEN_VALUE," debug: ");
        strcat(SCREEN_VALUE,dbStr(99));
        dbText(dbScreenWidth()-705,10,SCREEN_VALUE );
    dbSprite(1,0,0,1);//back



    dbSprite(2,face1X,face1Y,2);//face
           dbRotateSprite(2,angle);


    dbSprite(3,face2X,face2Y,2);//face
        dbRotateSprite(3,angle1);


        position1.x = dbMouseX();
        position1.y = dbMouseY();

            if(dbMouseClick()==1&&!Click)
        {
            Click = true;
            body1->SetTransform(body1->GetPosition(),a+=1);

            }
        if(dbMouseClick()==2&&!Click)
        {
            Click = true;
            body1->SetTransform(position1,body1->GetAngle());

            }
            if( dbMouseClick() != 1 && Click )
            {
                Click = false;

            }
        dbSync();
            }
    return;

    }

 

sry for mess in code... but as long as i can read it it's ok...

i create 2 body one on other and
slightly to left that it rotate but object only slide from object and not rotating... and if i change angle 45 degrees and when object hit ground it's still stand on edge 45 degrees rotated

Any ideas?

This topic is closed to new replies.

Advertisement