2015-01-03 2 views
0

나는 물리학을 가진 장면 init을 가지고 있으며, 물리학 몸체를 가진 문자 스프라이트를 가지고있다. 그리고 나는 물리학적인 몸체를 가진 정적 인 지상 스프라이트를 가지고있다. 그게 다 잘되어서 다음 단계는 내 성격을 옮기는 것이 었습니다. 이제 방금 캐릭터 X 위치를 업데이트하면 캐릭터가 움직여서 땅에 닿았지만 땅이 떨어져도 물방울이 떨어지지 않는다면 캐릭터 스프라이트를 움직여 땅에 머물러있게 할 수 있다고 생각했습니다. 항상? 내 업데이트 기능에 대한 코드는 당신이 gravity.Set 같은 중력을 설정 한) 당신의 problem-cocos2dx 물리 장면으로 스프라이트 이동하기

1을 해결할 수

void LevelOne::update(float delta) 
{ 
    if (mJoystick->isActive()) 
    { 
     Vec2 scaledVelocity = mJoystick->getVelocity() * 240; 
     Vec2 updatedPosition = Vec2(mCharacter->getPosition().x + scaledVelocity.x 
            * delta, mCharacter->getPosition().y); 

    mCharacter->setPosition(updatedPosition); 

    if (mJoystick->getVelocity().x < 0) 
    { 
     mCharacter->setFlippedX(false); 
    } 
    else 
    { 
     mCharacter->setFlippedX(true); 
    } 
} 

답변

0

다음 단계 이하 (0.0f로, -10.0f), Y는에 있어야합니다 부정.

2) 캐릭터 스프라이트를 동적으로 설정하십시오.

3) 코드는 업데이트 메소드에 있어야합니다.

int32 velocityIterations = 1; 
    int32 positionIterations = 1; 
    world -> Step(dt, velocityIterations, positionIterations); 
    for (b2Body* b = world -> GetBodyList(); b; b = b -> GetNext()) { 
     if (b -> GetUserData() != NULL) { 
      CCSprite *myActor = (CCSprite*) b -> GetUserData(); 
      if(myActor != NULL) { 
       myActor->setPositionY(b -> GetPosition().y * PTM_RATIO); 
       myActor->setRotation(-1 * CC_RADIANS_TO_DEGREES(b -> GetAngle())); 
      } 

     } 
    }