Unity 3d 实现AI随机行走

通过自己的思路实现的 AI 随机行走,转向,新手上路如有写的不好的地方欢迎讨论。

效果图

下面是代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;public class xc : MonoBehaviour
{//行走速度和旋转速度,这里说一下加public挂载后可以在unity的检查器上修改数值并调试,反之则无public float MoveSpeed = 1.0f;public float RotateSpeed = 30.0f;//控制走路方式public int key = 0;//当前是否行走public bool temp= true;//当前挂载脚本的人物行为Animator m_Animator;// Start is called before the first frame updatevoid Start(){key = 1;//获取人物行为,如未使用模型和行为树作请注释掉这条代码m_Animator = GetComponent<Animator>();//协程,也就是挂后台StartCoroutine("Wait");}void Update(){if (temp == false){//行走为否直接跳过,不执行后面的走路代码return;}//开始行走,这里可以修改为四种行走方式switch (key){case 1://向前走transform.Translate(0, 0, 1 * MoveSpeed * Time.deltaTime, Space.Self);//旋转1度transform.Rotate(0, 1 * RotateSpeed * Time.deltaTime, 0, Space.Self);break;case 2:transform.Translate(0, 0, 1 * MoveSpeed * Time.deltaTime, Space.Self);transform.Rotate(0, 1 * RotateSpeed * Time.deltaTime, 0, Space.Self);break;case 3:transform.Translate(0, 0, 1 * MoveSpeed * Time.deltaTime, Space.Self);transform.Rotate(0, 1 * RotateSpeed * Time.deltaTime, 0, Space.Self);break;case 4:transform.Translate(0, 0, 1 * MoveSpeed * Time.deltaTime, Space.Self);transform.Rotate(0, 1 * RotateSpeed * Time.deltaTime, 0, Space.Self);break;}}IEnumerator Wait(){while (true){//两秒运行一次Timer函数yield return new WaitForSeconds(2);Timer();}}void Timer(){//生成随机数1-3int i = Random.Range(0, 4);//走路的概率为3/2if ( i> 1){temp = true;//设人物模型行为状态为站立,如果是使用cube等没有行为树的话请注释这条代码m_Animator.SetBool("idle", true);//自身旋转,原地向后转transform.Rotate(0, 180, 0, Space.Self);return;}else{temp = false;//设人物模型行为状态为走路m_Animator.SetBool("idle", false);}//换一种走路方式,这里是按顺序,你也可以改成随机key++;//走路方式控制在1-4开区间内,别问我开区间是啥if (key == 5){key = 1;}}
}

挂载到人物模型上就行了,如果使用cube或者没有行为树,按照注释注释掉对应的地方即可。

关于人物的Animator行为我会在下期讲。

Unity 3d 实现AI随机行走相关推荐

  1. Unity 3D网络游戏实战 pdf

    Unity 3D网络游戏实战(全) 目录: 掌握Unity3D基本元素 1.1 简单的游戏 1.1.1在场景中创建一个立方体 1.1.2编写可以使立方体运动的程序 1.1.3测试游戏1.1.4总结1. ...

  2. 【Unity 3D 从入门到实战】Unity 3D 导航系统

    目录 一,前言 二,导航系统介绍 三,Navigation总控制面板介绍 1,Agents面板(导航参数设置) 2,Areas面板(层设置) 3,Bake面板(烘焙导航网格) 4,Object面板(对 ...

  3. Unity 3D 人形角色动画(Avatar)||Unity 3D 导航系统||Unity 3D 障碍物

    Unity 3D 人形角色动画(Avatar) Mecanim 动画系统适合人形角色动画的制作,人形骨架是在游戏中普遍采用的一种骨架结构.. 由于人形骨架在骨骼结构上的相似性,用户可以将动画效果从一个 ...

  4. Unity 3D 导航系统||Unity 3D 障碍物

    Unity 3D 导航系统 过去,游戏开发者必须自己打造寻路系统,特别是在基于节点的寻路系统中,必须手动地在 AI 使用的点之间进行导航,因此基于节点系统的寻路非常烦琐. Unity 3D 不仅具有导 ...

  5. Unity三维游戏开发C#编程大师班 Masterclass In C# Programing Unity 3D Game Development FPS

    本课程采用现代游戏开发(Unity 2021)的最新内容和最新技术 学习任何东西的最好方法是以一种真正有趣的方式去做,这就是这门课程的来源.如果你想了解你看到的这些不可思议的游戏是如何制作的,没有比这 ...

  6. 《Unity 3.x游戏开发实例》一1.5 欢迎来到Unity 3D

    本节书摘来异步社区<Unity 3.x游戏开发实例>一书中的第1章,第1.5节,作者: [加]Ryan Henson Creighton 译者: 师蓉 责编: 陈冀康,更多章节内容可以访问 ...

  7. 雨松MOMO《Unity 3D游戏开发》源码公布

    原创文章如需转载请注明:转载自雨松MOMO程序研究院 本文链接地址:雨松MOMO<Unity 3D游戏开发>源码公布 下载源码时,首先大家请登陆图灵社区找到<Unity 3D游戏开发 ...

  8. Unity 3D 博客汇总

    附录 X4.作业优秀博客汇总 目录 文章目录 附录 X4.作业优秀博客汇总 1.最有价值个人博客(Valuable Person Blogs) 2.博客表达技巧与游戏创新 2.1 写读者欢迎的游戏博客 ...

  9. Unity 3D中的内存管理与优化游戏运行性能的经验

    Unity3D在内存占用上一直被人诟病,特别是对于面向移动设备的游戏开发,动辄内存占用飙上一两百兆,导致内存资源耗尽,从而被系统强退造成极差的体验.类似这种情况并不少见,但是绝大部分都是可以避免的.虽 ...

最新文章

  1. [WUST2017]一组简单一点的题目(三) A - Calculate S(n)
  2. 取消项目git_git取消文件跟踪
  3. 笔记1——C++多态与Java多态的异同
  4. php判断单选框是否被选中,jquery怎么判断radio是否选中
  5. (五)DOM4j进行XML文件的解析及生成
  6. java 绑定微信号开发_Java开发中的更多常见危险信号
  7. jqgrid下载,引入
  8. TechED2010与我(一)—— 初来乍到
  9. JAVA 正则表达式 RegexUtil
  10. WebRequest 对象的使用
  11. 通过Web界面访问华为USG6000防火墙+安全策略
  12. 单片机的ISP是什么
  13. 苹果登陆qq邮箱服务器,iPad和iPhone如何登陆QQ邮箱 怎么设置
  14. 学习笔记——游戏打击感
  15. winform 显示分隔控件_Winform分页控件之纯分页显示处理
  16. 计算机到交换机端口查询,新手上路:根据ip地址查交换机端口网络知识 -电脑资料...
  17. 2021-6-10-今日收获
  18. [数据压缩]_实验③ DPCM编码
  19. 毕设--自动浇花系统的设计
  20. 单片机毕设 stm32人体健康状态检测系统(项目开源)

热门文章

  1. java 进程占用系统内存过高分析
  2. Connections could not be acquired from the underly
  3. 佛山南方风机股份启用易度文控管理
  4. 如何安全使用计算机英语作文,f8进入电脑安全界面全都是英文怎么操作
  5. Git 配置SSH的端口号
  6. 转型阵痛期,好未来减亏容易增收难?
  7. 林斤澜:温故知新——读《故事新编》
  8. java web框架struts_Struts框架在Web开发中的应用
  9. 使用Google浏览器截屏
  10. PHP程序判断星座,php根据日期判断星座的函数分享