您的位置:首页 > 大数据 > 人工智能

敌人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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: