楼主: 路丝丝

[脚本] Unity人工智能确定性AI算法之随机运动

[复制链接]

28

主题

21

听众

285

积分

Rank: 2

升级   28.33%

发表于 2015-11-9 17:50 |显示全部楼层
共享资源获取更多积分!share your resources get more credits!
关于AI的介绍我们在前面提到过,本篇文章所写内容都是平时学习人工智能的时候有意的将它们转换成Unity 的实现版本。所谓确定性算法是一些预先确定或者预先编程的操作,比如《星球大战》游戏中的小行星的AI都是非常简单的,都是以随机速率将其沿着随机的方向发射出去,这是一种最简单的智能,不过它们的智能都是相当确定和可预知的。
而确定性AI算法里面,随机运动又是最简单的,如图,我设置了移动随机和停留随机时间,这样看上去才更加真实。
贴上代码
80using UnityEngine;
using System.Collections;
public class AIRandMove : MonoBehaviour
{
float stopTime;
float moveTime;
float vel_x, vel_y, vel_z;//速度
///
/// 最大、最小飞行界限
///
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();
timeCounter1 = 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);
}
}
}
好了本篇unity3d教程关于人工智能确定性AI算法之随机运动到此结束,下篇我们再会!
资源地址: http://cg.silucg.com/dongman/unity3d/7972.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

楼主热帖

0

主题

12

听众

27

积分

Rank: 1

升级   13.5%

发表于 2015-11-13 16:32 |显示全部楼层
新手上路ing,又学到不少实用代码,码农崛起ing
回复

使用道具 举报

0

主题

10

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-2-18 17:11 |显示全部楼层
很不错
回复

使用道具 举报

0

主题

10

听众

206

积分

Rank: 2

升级   2%

发表于 2017-2-18 17:08 |显示全部楼层
顶顶多好
回复

使用道具 举报

0

主题

10

听众

200

积分

Rank: 2

升级   0%

发表于 2017-2-18 17:50 |显示全部楼层
真心顶
回复

使用道具 举报

0

主题

10

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-2-18 17:05 |显示全部楼层
难得一见的好帖
回复

使用道具 举报

0

主题

10

听众

206

积分

Rank: 2

升级   2%

发表于 2017-2-18 17:59 |显示全部楼层
很好哦
回复

使用道具 举报

0

主题

20

听众

202

积分

Rank: 2

升级   0.67%

发表于 2017-3-12 21:54 |显示全部楼层
很不错
回复

使用道具 举报

0

主题

20

听众

207

积分

Rank: 2

升级   2.33%

发表于 2017-3-12 21:31 |显示全部楼层
说的非常好
回复

使用道具 举报

0

主题

20

听众

203

积分

Rank: 2

升级   1%

发表于 2017-3-12 21:14 |显示全部楼层
很好哦
回复

使用道具 举报

温馨提示:求助请到“Unity技术讨论”版块中发帖,便于集中解决!
您需要登录后才可以回帖 登录 | 立即注册

懒人模式:

关闭

站长推荐 上一条 /1 下一条

Unity3D游戏开发联盟(资源共享平台) -Unity3D,Unreal ( 苏ICP备12051100号 )   

GMT+8, 2019-11-13 08:52 , Processed in 0.120218 second(s), 52 queries .