从子对象设置父变量并由其他子对象使用

时间:2019-02-08 15:43:48

标签: java

我正在做一个游戏,摄像机跟随玩家。 Player类扩展了一个抽象GameObject类,该类负责绘制。为了使播放器居中,我在Player的更新功能中执行以下操作:

super.setReferenceVector(positionVector);
super.draw(g);  

GameObject中,我有构造函数:

public GameObject() {
    referenceVector = new Vector2(0, 0);
    correctedPositionVector = new Vector2(0, 0);
}

这些方法:

public void setReferenceVector(Vector2 reference) {
    referenceVector.x = reference.x;
    referenceVector.y = reference.y;
}

public Vector2 setCorrectedPositionVector(Vector2 positionVector) {
    correctedPositionVector.x = positionVector.x + (GamePanel.WIDTH / 2) - referenceVector.x;
    correctedPositionVector.y = positionVector.y + (GamePanel.HEIGHT / 2) - referenceVector.y;
    return correctedPositionVector;
}

public void draw(java.awt.Graphics2D g) {
    AffineTransform old = g.getTransform();
    AffineTransform at = AffineTransform.getTranslateInstance(setCorrectedPositionVector(positionVector).x, setCorrectedPositionVector(positionVector).y);
    g.drawImage(animation.getImage(), at,null);
    g.setTransform(old);
}

所有这些对播放器都适用。但是,当需要绘制另一个子类中的另一个对象时,referenceVector(0, 0)

(我相信)我理解为什么会这样,因为referenceVectorGameObject对象没有关联。 GameObject类既不会创建Player对象,也不会创建其他对象,因此无法执行player.positionVector。我不确定如何解决这个问题,也许这是一个设计问题。这可能是重复的问题。在这种情况下,请指出正确的方向。

0 个答案:

没有答案
相关问题