Jump to content
  • Advertisement
Sign in to follow this  
Splinter1991

dark gdk and box2d rotation not working right

This topic is 1868 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!