0
这个问题是关于AndEngine/Android,但也适用于Java。我在游戏中有一个NPC类,当玩家靠近他们时,我希望他们通过在他们上面创建一个矩形/文本来显示消息。我创建了多个NPC,并将它们添加到名为NPCbody的数组中。如果他们靠近玩家,我想使用for循环在他们每个上面绘制矩形/文本。我可以做到这一点,但唯一的问题是,现在我有这个代码,他们不会脱离现场。它填满了玩家接近NPC的矩形。那么我如何才能让这些创建的矩形只为每个NPC创建一次,并更新?创建并更新数组元素的对象? Android
try {
if (NPCbody.size() > 0) {
for (int i = 0; i < NPCbody.size(); i++) {
final Rectangle NPCmessageRectangle;
final Text NPCmessageText;
NPCmessageRectangle = new Rectangle(NPCx - 50, NPCy + 175, 200, 50,
vbom);
NPCmessageRectangle.setColor(Color.BLACK);
NPCmessageRectangle.setAlpha(90);
NPCmessageText = new Text(NPCx, NPCy, resourcesManager.smallFont,
"abcdefghijklmnopqrstuvwxyz1234567890.,!?\" ", vbom);
NPCmessageText.setText("");
attachChild(NPCmessageText);
NPCmessageText.setVisible(false);
attachChild(NPCmessageRectangle);
NPCmessageRectangle.setVisible(false);
NPCx = NPCbody.get(i).getPosition().x * 32;
NPCy = NPCbody.get(i).getPosition().y * 32;
NPCmessage = npc.getNPCmessage();
NPCmessageText.setText(NPCmessage);
NPCmessageText.setPosition(NPCx, NPCy + 50);
NPCmessageRectangle.setX(NPCx);
NPCmessageRectangle.setY(NPCy + 50);
if (isDistance(player.getX(), player.getY(), NPCx, NPCy,
150)) {
NPCmessageRectangle.setVisible(true);
NPCmessageText.setVisible(true);
System.out.println("Rectangle set visible for NPC "+i);
} else {
NPCmessageRectangle.setVisible(false);
NPCmessageText.setVisible(false);
}
}
}
} catch (Exception e) {
}
(此代码是一个被反复调用方法的一部分。)