ITKeyword,专注技术干货聚合推荐

注册 | 登录

Unity人工智能学习—确定性AI算法之随机运动

zhangxiao13627093203 分享于 2015-08-12

推荐:Unity人工智能学习—确定性AI算法之追踪算法二

CSDN个人博客地址,凯尔八阿哥栏http://blog.csdn.net/zhangxiao13627093203,转载请注明出处 上一篇讲到了追踪算法的比较简单的形式,看上去比较假,因为AI控制

2020腾讯云“6.18”活动开始了!!!(巨大优惠重现!4核8G,5M带宽 1999元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1059

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

以下所写内容都是平时学习人工智能的时候有意的将它们转换成Unity的实现版本。所谓确定性算法是一些预先确定或者预先编程的操作,比如《星球大战》游戏中的小行星的AI都是非常简单的,都是以随机速率将其沿着随机的方向发射出去,这是一种最简单的智能,不过它们的智能都是相当确定和可预知的。 而确定性AI算法里面,随机运动又是最简单的,如图 我设置了移动随机和停留随机时间,这样看上去才更加真实。 using UnityEngine;using System.Collections;public class AIRandMove : MonoBehaviour{

float stopTime;

float moveTime;

float vel_x, vel_y, vel_z;//速度

/// <summary>

/// 最大、最小飞行界限

/// </summary>

float maxPos_x = 500;

float maxPos_y = 300;

float minPos_x = -500;

float minPos_y = -300;

int curr_frame;

int total_frame;

float timeCounter1;

float timeCounter2;

// int max_Flys = 128;

// Use this for initialization

void Start()

{

Change();

}

// Update is called once per frame

void Update()

{

timeCounter1 += Time.deltaTime;

if (timeCounter1 < moveTime)

{

transform.Translate(vel_x, vel_y, 0, Space.Self);

}

else

{

timeCounter2 += Time.deltaTime;

if (timeCounter2 > stopTime)

{

Change();

timeCo

推荐:Unity人工智能学习—确定性AI算法之追踪算法一

尽管随机运动可能完全不可预知,它还是相当无趣的,因为它完全是以相同的方式工作——完全随机。下面要学习到的算法是根据具体环境作出不同响应的处理。作为例子

unter1 = 0;

timeCounter2 = 0;

}

}

Check();

}

void Change()

{

stopTime = Random.Range(1, 5);

moveTime = Random.Range(1, 20);

vel_x = Random.Range(1, 10);

vel_y = Random.Range(1, 10);

}

void Check()

{

//如果到达预设的界限位置值,调换速度方向并让它当前的坐标位置等于这个临界边的位置值

if (transform.localPosition.x > maxPos_x)

{

vel_x = -vel_x;

transform.localPosition = new Vector3(maxPos_x, transform.localPosition.y, 0);

}

if (transform.localPosition.x < minPos_x)

{

vel_x = -vel_x;

transform.localPosition = new Vector3(minPos_x, transform.localPosition.y, 0);

}

if (transform.localPosition.y > maxPos_y)

{

vel_y = -vel_y;

transform.localPosition = new Vector3(transform.localPosition.x, maxPos_y, 0);

}

if (transform.localPosition.y < minPos_y)

{

vel_y = -vel_y;

transform.localPosition = new Vector3(transform.localPosition.x, minPos_y, 0);

}

}}

推荐:Unity人工智能学习—确定性AI算法之追踪算法四

在追踪算法三中已经提到了它的缺陷之处:到达目标点的时候并不会马上停下来,而是不停的来回穿梭在目标点。这一篇其实就是第三篇优化这个缺陷的算法。它的效果图

以下所写内容都是平时学习人工智能的时候有意的将它们转换成Unity的实现版本。所谓确定性算法是一些预先确定或者预先编程的操作,比如《星球大战》游戏中的小行星的AI都是非常简单的,都是以随

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。