2016-12-23 29 views
1

有人可以幫助我嗎?LibGdx RayCast box2d調試(可視屏幕)

我想在遊戲屏幕中看到光線投射(用於調試..)。

實現該目標的最佳方法是什麼? 請注意,我使用「box2d」。而我在屏幕上畫東西的方式是動畫.. 那麼這是否意味着我需要創建一個「EdgeShape」?然後這是我的調試線?

如果有任何建議,你可以給或想法我真的不介意如何實現,我想要的是一個正確的方式來看Raycast。 我找不到繪製Raycast的好方法,我看到有人使用batch.draw(); - 但我想這對我不起作用,因爲那樣我的遊戲工作就是用box2ds形狀和動畫?是對的嗎?

非常感謝!

world.rayCast(callback,  enemy.getBody().getPosition(), 
      new Vector2(enemy.getBody().getPosition().x-500, enemy.getBody().getPosition().y)); 
    } 

    RayCastCallback callback = new RayCastCallback() { 
     @Override 
     public float reportRayFixture(Fixture fixture, Vector2 point, 
      Vector2 normal, float fraction) { 

     if(fixture.getBody().getUserData() == ModelType.PLAYER) { 
      System.out.println("hey!"); 
      return 0; 
     } 
     return -1; 
     } 

回答

3

我現在ShapeRendrer調試它:

shapeRenderer.setProjectionMatrix(batch.getProjectionMatrix()); 
shapeRenderer.begin(ShapeRenderer.ShapeType.Line); 
shapeRenderer.line(rayStart,rayEnd); 
shapeRenderer.setColor(Color.RED); 
shapeRenderer.end(); 

我只是將它添加到同一類,在我的敵人。

,我也取點(Vector2)的護理:

world.rayCast(rayCastCallback, p1, p2); 

進行更新,因爲我的敵人移動。