2013-12-09 4 views
0

Android 용 Andengine에서 개발 한 게임입니다. 게임 : 시체가 있습니다 (작은 상자라고합시다). 그리고 나는 원하는 : 플레이어가 충돌, 플레이어가 점프합니다. 그것은 점프하고 있지만 모든 충돌에서 동일한 높이를 내 코드 100px로 점프하지 않습니다! 내 코드는 여기에 있습니다 :Box2d body setLinearImpulse() function stability

if (footFake.collidesWith(this)) 
{ 

    player.getBody().applyLinearImpulse(new Vector2(0, 100/PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT), player.getBody().getWorldCenter()); 

} 

그리고 박스 바디 기능 :

final FixtureDef fixtureDef = PhysicsFactory.createFixtureDef(0, 0, 0); 
this.body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, this, BodyType.StaticBody, fixtureDef); 
this.body.setUserData("jumpBox"); 
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(this, this.body, true, true)); 

그리고 플레이어 :

대신 당신이 원하는 높이 개까지 점진적으로 몸을 변화시킬 수 임펄스 적용
final FixtureDef fixtureDef = PhysicsFactory.createFixtureDef(0, 0, 0.1f); 
this.body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, this, BodyType.DynamicBody, fixtureDef); 

답변

0

. SetLinearVelocity를 사용하여 시체의 수직 속도를 설정할 수 있습니다. 시작 속도는 매번 일정해야합니다. Singhak 같은 물론

당신은 또한 몸에 (충돌과 같은) 다른 영향이 없는지 확인해야한다, 말했다가 엉망 당신이 원하는 속도를 것이다.

0

. 몸이 적용 많은 힘이 충돌 할 때 때문에

는 그리고 당신의 케이스 본체는 동일한 높이로 점프하지 않습니다. 힘의 일부 시간 가치는 동일하고 약간의 시간은 다릅니다. 신체의 기존 속도가 다를 수 있기 때문에 항상 같은 높이 점프를 제공하지 않습니다 충동을 적용