敌人AI:行走
2016-06-02 14:39
561 查看
实现的功能
在游戏过程中,有敌人和主角两种形态的GameObject。假设主角的行动和攻击已经设置完毕,现在设计敌人的AI,在本节中只开发敌人的行走---总是朝向主角进行行走。注意:下面的Enemy.cs脚本挂在敌人身上。控制敌人AI行走的方式有很多,本节只是其中一种方法。
具体实现
1. 首先在敌人的Inspector面板中给敌人添加Character Controller,并设置好相关的参数,如下图所示。2. 给敌人添加Enemy.cs脚本,用该脚本控制敌人的AI行走。
using UnityEngine; using System.Collections; public class Enemy : MonoBehaviour { public float speed = 2f;// 敌人行走的速度 private CharacterController cc; // 定义控制敌人行走的CharacterController组件 void Start(){ cc = this.GetComponent<CharacterController> ();// 得到CharacterController组件 } void Update(){ Move ();// 在Update方法中,每一帧调用Move方法 } // *********************** 控制敌人AI行走的方法 ********************************* void Move(){ // 需求分析:要实现敌人总是朝着游戏主角行走 // 1. 首先获取主角相关组件 // 主角的Transform组件 Transform player = TranscriptManager._instance.player.transform;// 获取主角由TranscriptManager类管理 Vector3 targerPos = player.position; targerPos.y = transform.position.y;// 敌人的y和主角的y一致 // 2. 面向主角 transform.LookAt(targerPos); // this/*敌人*/.transform.LookAt(targetPos) // 3. 敌人移动 cc.SimpleMove (transform.forward * speed); } }
获取主角的脚本,该脚本挂在空的GameObject上面,用于Transcript中的代码管理。
using UnityEngine; using System.Collections; public class TranscriptManager : MonoBehaviour { public static TranscriptManager _instance; public GameObject player; // Use this for initialization void Awake () { _instance = this; player = GameObject.FindGameObjectWithTag("PlayerBoy"); } }
相关文章推荐
- HDOJ/HDU 1982 Kaitou Kid - The Phantom Thief (1)(字符串处理)
- HDOJ/HDU 1982 Kaitou Kid - The Phantom Thief (1)(字符串处理)
- 排序(三)之直接插入排序Straight Insertion Sort
- 14.1.2 Checking InnoDB Availability 检查InnoDB 可用性:
- 14.1.2 Checking InnoDB Availability 检查InnoDB 可用性:
- 14.1.2 Checking InnoDB Availability 检查InnoDB 可用性:
- windows 7 64位 JMail注册
- USACO 2009 Feb Gold 1.Fair Shuttle 贪心
- Inpaint 2.4简体中文版 任何人都会…
- [leetcode] 70. Climbing Stairs
- CLOSE_WAIT状态的生成原因
- CS231n 2016 通关 第五章 Training NN Part1
- 553 relay check local fail. (本域用户必须通过验证) ----一个老项目发邮件问题
- leecode_220 Contains Duplicate III
- 并发注意事项(2)并发工具优先于wait和notify
- 03-树3 Tree Traversals Again
- Failed to connect to repository database. OMS will be automatically restarted once it identifies tha
- 扩展SplitContainer控件
- ExecutorService——shutdown方法和awaitTermination方法
- ExecutorService——shutdown方法和awaitTermination方法