全局位置在动作中遇到麻烦

问题描述 投票:0回答:1

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

我写:

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

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

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

而且我不确定我是否可以像这样引用敌人类中的变量playerGlobalPos并让代码jsut识别它,有些东西告诉我它不会起作用。我是多类编程的新手,所以将变量转移到其他类会给我带来一些麻烦。

actionscript-3 flash class flash-cs5 point
1个回答
1
投票

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

public static var player:PlayerTank;

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

© www.soinside.com 2019 - 2024. All rights reserved.