好吧我使用libgdx进行Android游戏开发,我有一个AI,根据变量“ENEMYSPEED”的值移动。最初,该值设置为
static float EnemySPEED = 0.5f;
一切正常。所以我执行一个像这样的简单计算
EnemyVector.y - = EnemySPEED
到目前为止一切都很好......
现在我感觉我的AI正在快速移动并且我将变量值从0.5f减小到0.4f并且我执行相同的减量操作并且它不会减少!
发生了什么事???
编辑:
private void EnemyMove()
{
EnemySection = findSection(Enemy);
if(EnemySection == PlayerSection)
{
if(EnemyVector.x > PlayerVector.x) EnemyVector.x -= EnemySPEED;
else if(EnemyVector.x < PlayerVector.x) EnemyVector.x += EnemySPEED;
else if(EnemyVector.y > PlayerVector.y) EnemyVector.y -= EnemySPEED;
else if(EnemyVector.y < PlayerVector.y) EnemyVector.y += EnemySPEED;
}
else if(EnemySection == 1 ||EnemySection == 3) EnemyVector.x += EnemySPEED;
else if(EnemySection == 2 ||EnemySection == 4) EnemyVector.x -= EnemySPEED;
else if(EnemySection == 5)
{
if(EnemyVector.y > 212 || EnemyVector.y < 75)
{
if(PlayerSection == 1 ||PlayerSection == 3) EnemyVector.x -= EnemySPEED;
else if(PlayerSection == 2 ||PlayerSection == 4) EnemyVector.x += EnemySPEED;
}
else
{
if(PlayerSection == 1 ||PlayerSection == 2) EnemyVector.y += EnemySPEED;
else if(PlayerSection == 3 ||PlayerSection == 4) EnemyVector.y -= EnemySPEED;
}
}
if(Player.overlaps(Enemy)) System.out.println("Target Acquired!");
System.out.println(EnemyVector.x + "," + EnemyVector.y);
}
findSection根据传递的参数找到敌人或玩家所在的象限。
编辑2:我刚注意到它只适用于0.5,1,1.5而不是任何值。这是某种限制吗?答案 0 :(得分:1)
伙计们我很抱歉问题是比较两个花车......:/
例如,比较127.8和127.0显然无法正常工作。我将代码更改为此并且工作正常...不知道我是如何错过这个......所学的经验教训
无论如何,谢谢各位朋友的帮助..
if((int)EnemyVector.x > (int)PlayerVector.x) EnemyVector.x -= EnemySPEED;
else if((int)EnemyVector.x < (int)PlayerVector.x) EnemyVector.x += EnemySPEED;
else if((int)EnemyVector.y > (int)PlayerVector.y) EnemyVector.y -= EnemySPEED;
else if((int)EnemyVector.y < (int)PlayerVector.y) EnemyVector.y += EnemySPEED;
答案 1 :(得分:0)
尝试将EnemySPEED
设为volatile
。可能是EnemySPEED
正在执行此代码的线程缓存,因此当您将EnemySPEED
从0.5
更改为{{{}时,您无法看到差异1}}。