0

我正在研究一些敌方 AI,我希望他们每隔一段时间就会根据计时器转向玩家。所有的代码都被充实了,但是我使用了多个单独的类,并且我在让玩家成为敌方 AI 可以访问的全局点时遇到了很多麻烦。

我写:

public var playerGlobalPos:Point = localToGlobal(new Point(PlayerTank.x, PlayerTank.y))

但这不断出现此错误消息:

1119:通过静态类型 Class 的引用访问可能未定义的属性 y。

而且我不确定我是否可以像这样在敌人类中引用变量 playerGlobalPos 并让代码 jsut 识别它,有些东西告诉我它只是行不通。我是多类编程的新手,因此将变量传递到其他类给我带来了一些麻烦。

4

1 回答 1

1

显然你PlayerTank是一个类名,而不是一个对象(实例)名称。想象一下你的玩家控制了两辆坦克,应该使用哪一个的 X 和 Y?所以,你的敌人应该能够以某种方式到达玩家的坦克实例。虽然只有一名玩家和一名坦克,但最好的学习方式是在你的 AI 类中使用静态变量。

public static var player:PlayerTank;

在创建战场时将其与玩家实例一起分配一次,因为它是您放置所有 AI、玩家、障碍物等的地方,然后在 AI 例程中引用它。这样的playerGlobalPointvar 也可以是静态的,但请注意,如果可能,应定期更新其 X 和 Y,而无需调用new Point()。每次调用localToGlobal()仍会创建一个Point对象,但您可以避免创建两个。

于 2013-07-28T04:12:23.177 回答