2017-05-21 6 views
0

실행되지 않습니다 : AbstractEntity Entity (Entity를 확장하는)인스턴스 내가 패키지와 2 개 클래스를 재정의 방법

나는 public void method called move()Player (AbstractEntity를 구현한다). AbstracEntity, @Overridden, 공백 방법으로는 Entity, 또 에있는 @Overridden으로 선언되어 있습니다. 그러나, 나는 내 메인 루프에서이 코드를 호출 할 때 : 이동 방법은 Entity 클래스에서 구현

for(Entity entity:allEntities){ 
    entity.move(); 
    renderer.processEntity(entity); 
} 

: @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() 방법보다는 오버라이드 (override) 하나를 수행합니다. 나는 너무 정확하게 이것을 재구성하는 방법을 확신 할 수 없다.

+0

메서드를 호출 할 실제 개체가 Player 클래스이고 Entity가 아닌 것은 확실합니까? –

+0

'Entity' 클래스와'Player' 클래스의 관련 코드를 포함하십시오 (즉, 두 클래스 모두에서'move()'구현). – Eran

+0

두 가지 구현이 모두 추가되었으며, 메서드가 호출 된 엔티티는 엔티티 배열에서 가져 오지만 플레이어 클래스로 추가됩니다. – Peter

답변

0

구조해야합니다 같은 :

Player extends Entity 
Entity extends AbstractEntity 

그리고 선수 메소드를 호출하기위한 Player이어야에 당신이 언급하는 인스턴스입니다.
Entity entity = new Player();

0

나는 내 오류와 단순히 코드 폴드에서 숨겨진 문제를 발견했습니다. 플레이어 엔티티도 처리되고 렌더링 된 엔티티 목록이 추가되지 않고 오히려 별도로 렌더링되었습니다. 이제 allEntities 배열을 추가했으며 의도 한대로 작동합니다. 방금 코드를 열면 몇 시간의 좌절을 피할 수있었습니다.

+1

끝 부분에 질문을 ** EDIT ** 섹션으로 추가하십시오. –