2016-07-20 62 views
1

我正在嘗試編程一個朝着鼠標旋轉並以特定速度朝向鼠標行進的玩家。我使用的是正射相機,但是隻要我將相機的位置設置爲與玩家位置相同,玩家旋轉就會停止工作,並且會遍佈整個地方。我相信這可能與使用屏幕而不是世界x和y的鼠標座標有關。我嘗試了不投影Gdx.inout.getY/X以否決爲準。任何幫助深表感謝。Libgdx玩家輪換搞砸

我使用此代碼跟隨玩家:

cam.position.x = player.getX(); 
    cam.position.y = player.getY(); 
    cam.update(); 

And this code for rotation: 
float mouseX = Gdx.input.getX(); 
       float mouseY = (480 - Gdx.input.getY()); 

       float originX = getWidth()/2 + position.x; 
       float originY = getHeight()/2 + position.y; 

       double angle = Math.atan2(mouseY - originY, mouseX - originX) * (180/Math.PI) + 90; 

       if (angle < 0) 
         angle += 360; 

       rotation = (float) angle; 

       direction.x = mouseX - position.x; 
       direction.y = mouseY - position.y; 

       double hyp = Math.sqrt(direction.x * direction.x + direction.y * direction.y); 
       direction.x /= hyp; 
       direction.y /= hyp; 

       position.x += direction.x * 2; 
       position.y += direction.y * 2; 

回答

1

你試過突出(或unprojecting)之分?

ViewPort viewPort = new ... // which ever ViewPort you're using 

Vector2 worldPoint = new Vector2(x, y); 
Vector2 projected = viewPort.project(worldPoint); 

Vector2 screenPoint = new Vector2(x, y); 
Vector2 unprojected = viewPort.unproject(screenPoint); 
+0

對不起即時通訊新一些這方面的東西,所以我創建了一個新的視口,並設置它,所以我的相機?我的世界將會是什麼?玩家的位置? –

+0

對不起,我假設你已經在使用ViewPort。搜索StretchViewport(有一個不同的Viewport可用,我在當前項目中使用這個) - 你應該能夠找到你的答案,這樣... – munyul

+0

謝謝,我得到它使用屏幕視口和unpojecting那樣。 –