我有一个包和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