我有一個包和2類: AbstractEntity
Entity
(實現AbstractEntity
) Player
(其延伸Entity
)實例的一類將不運行的重寫方法
我有public void method called move()
。這是在AbstracEntity
宣佈,在Entity
爲空白方法和@Overridden
@Overridden
再次Player
的播放器,我實際的招法。然而,當我把這個代碼在我的主循環:
for(Entity entity:allEntities){
entity.move();
renderer.processEntity(entity);
}
Move方法在實體類實現: @Override 公共無效移動(){}
和播放機類如:
@Override
public void move(){
checkInputs();
rotY += currentTurnSpeed * DisplayManager.getFrameTimeSeconds();
float distance = currentSpeed * DisplayManager.getFrameTimeSeconds();
float dx = (float) (distance * Math.sin(Math.toRadians(rotY)));
float dz = (float) (distance * Math.cos(Math.toRadians(rotY)));
upwardsSpeed+= Gravity * DisplayManager.getFrameTimeSeconds();
float dy = upwardsSpeed * DisplayManager.getFrameTimeSeconds();
if(super.getPosition().y<TerrainHeight){
upwardsSpeed = 0;
dy = TerrainHeight - super.getPosition().y;
}
super.increasePosition(dx, dy, dz);
super.setRotation(new Vector4f(0f,(float) (Math.sin(Math.toRadians(-rotY/2))),0f,(float) Math.cos(Math.toRadians(-rotY/2))));
System.out.println("here");
}
這將執行空白move()
方法而不是覆蓋的方法。我不確定這個太正確的實例太重構了嗎?
你確定要調用的方法的實際對象是球員類,而不是實體? –
請包括'Entity'類和'Player'類的相關代碼(即兩個類中的'move()'的實現)。 – Eran
這兩個實現都添加了,該方法被調用的實體從實體數組中拉出,但是作爲玩家類添加。 – Peter