2016-10-03 4 views
2

현재 Im은 작은 던전 크롤러를 개발 중입니다. 내 "기사"수업에는 특별한 능력이 있어야합니다. 그는 앞으로 나아와 Enemys를 뚫을 수 있어야합니다. 현재 Enemys와 Player에 Box2D Bodys를 사용 중입니다 ... Player Body에 방향을 제시하는 방법에 대한 아이디어가 있습니까?Libgdx/Box2D 몸에 밀기를 적용 하시겠습니까?

는 이미 테스트 :

entityBody.applyLinearImpulse(100f, 0, entityBody.getWorldCenter().x, entityBody.getWorldCenter().y, true);   

그것은 작동하지만 문제는 몸이 그 방향으로 순간 이동하고 있지 않은지이다 "앞으로 밀어". 그는 빨리 움직일 때 충돌도하지 않습니다 ... 어떤 아이디어? 위키가 무슨

+1

'body.setLinearVelocity()'로 시도해 보셨습니까? 그것은 나를 위해 완벽하게 작동합니다. – Marius

+0

안녕하세요! 귀하의 빠른 답변을 주셔서 감사합니다 :-) 나는 그것을 시도했지만, 거기에 하나의 문제가 있기 때문에 playermovement 나는 그에게 신체 매개 변수를 0으로 (그것 없이는 신체가 미끄러질 것이다). 메신저 setLinearVelocity하려고하면 그 방향으로 푸시하지만 그것은 엔티티 bodys 무시 ... 이상한 일은 내가 높은 선 속도를 사용하는 경우에만 발생합니다 – genaray

+0

아이디어가 없습니까? :/도움이 되었으면 좋겠다. – genaray

답변

0

체크 아웃 대답 :

https://github.com/libgdx/libgdx/wiki/box2d#impulsesforces 당신은 플레이어 운동 예 부분에 관심이있을 수 있습니다. 그들은 어떤 키를 눌렀는지와 몸이 최대 속도에 도달하지 않았는지에 따라 몸에 왼쪽 또는 오른쪽 충동을 적용하고 있습니다. 충돌은 몸이 너무 빨리 이동하기 때문에, 당신은 몸의 BodyDef에 총알 플래그를 설정해야 할 수도 있습니다 발생하지 않는 문제에 대한

Vector2 vel = this.player.body.getLinearVelocity(); 
Vector2 pos = this.player.body.getPosition(); 

// apply left impulse, but only if max velocity is not reached yet 
if (Gdx.input.isKeyPressed(Keys.A) && vel.x > -MAX_VELOCITY) {   
    this.player.body.applyLinearImpulse(-0.80f, 0, pos.x, pos.y, true); 
} 

// apply right impulse, but only if max velocity is not reached yet 
if (Gdx.input.isKeyPressed(Keys.D) && vel.x < MAX_VELOCITY) { 
    this.player.body.applyLinearImpulse(0.80f, 0, pos.x, pos.y, true); 
} 

: 사용자가 설정하는

bodyDef.bullet = true; 

기본적으로 x 속도를 초당 100 미터로 설정하는 것을 의미하는 100에 대한 x 임펄스는 빠릅니다 (약 224 mph). 그것이 원한다면, 초 차의 속도로 적을 물리 칠 자유를 느껴보십시오!

관련 문제