|
发表于 2013-3-23 23:28:47
|
显示全部楼层
这个问题比上次的清晰,你只是不知道如何表达给程序,或者说程序不知道怎么去做,很简单,你需要告诉他:
1,你的AI数据构架中,会需要有以下2样新增的东西:
int nextKeepDistance; //用于计算到下一次要走向S1距离之外的帧数。
int KeepDistanceX; //这个是AI需要保持的距离也就是你的S1。
2,这个是常识,希望你记住:那就是在设计这种AI的时候,X管X思考,Y管Y思考,X的移动逻辑与Y的移动逻辑相对独立,两个逻辑产生出坐标(X,Y)。
3,执行的过程很简单,每一贞AI要执行的逻辑:
if (没有更优先的X目标点要走 && nextKeepDistance-- < 0)
{
目标点的X和KeepDistanceX和角色(执行AI的这个单位)的面相产生关系,获得新的目标点X;
nextKeepDistance设定为一个你认为合适的数值,也就是多少贞以后再次执行拉开距离,这个可以用公式也可以读取外部数据,看你们合作的方式了;
}
值得注意的是,你的nextKeepDistance如果设定的太小,很可能导致AI变得很愚蠢,总是躲着玩家走,所以我个人的建议还是你最好设计一个数学公式去取得这个值,可以加入随机数,但我个人很反对,我认为在没有直接增加游戏性的情况下使用随机数是策划不负责的表现之一。 |
|