Unity3D简单的怪物AI代码(C#脚本)
using UnityEngine; 
using System.Collections; 
 
public class BoosAI : MonoBehaviour 
 
    //敌人状态 
 
    //敌人站立状态 
    public const int STATE_STAND = 0; 
    //敌人行走 
    public const int STATE_WALK = 1; 
    //敌人奔跑状态 
    public const int STATE_RUN = 2; 
    //记录敌人的当前状态 
    private int enemyState; 
    //主角对象 
    private GameObject hero; 
    //备份上一次的敌人思考时间 
    private float backUptime; 
    //敌人思考下一次行为的时间 
    public const int AI_THINK_TIME = 2; 
    //敌人的巡逻范围 
    public const int AI_ATTACK_DISTANCE = 10; 
 
    // Use this for initialization 
    void Start() 
    { 
        //得到主角对象 
        hero = GameObject.Find("Cube"); 
        //设置敌人的默认状态站立 
        enemyState = STATE_STAND; 
    } 
 
    // Update is called once per frame 
    void Update() 
    { 
        //判断敌人与主角的距离 
        if (Vector3.Distance(transform.position, ansform.position) < 
        (AI_ATTACK_DISTANCE)) 
unity3d animation        { 
            //敌人进入奔跑状态 
            gameObject.animation.Play("run"); 
            enemyState = STATE_RUN; 
            //设计敌人面朝主角方向 
            transform.ansform); 
        } 
        //敌人进入巡逻状态 
        else 
        { 
            //计算敌人的思考时间 
            if (Time.time - backUptime >= AI_THINK_TIME) 
            { 
                //敌人开始思考 
                backUptime = Time.time; 
                 
                //取得0~2之间的随机数 
                int rand = Random.Range(0,2); 
 
                if (rand == 0) 
                { 
                    //敌人进入站立状态 
                    gameObject.animation.Play("idle"); 
                    enemyState = STATE_STAND; 
                } 
           
            else if (rand == 1) 
            { 
                //敌人进入站立状态 
                //敌人随机旋转角度 
                Quaternion rotate = Quaternion.Euler(0,Random.Range(1,5) * 90,0); 
                //1秒内完成敌人旋转 
                ation = Quaternion.ation,rotate,Time.deltaTime * 1000); 
                //播放行走动画     
                gameObject.animation.Play("walk"); 
                enemyState = STATE_WALK; 
            } 
        } 
      } 
        switch (enemyState) 
        { 
            case STATE_STAND: 
                break; 
            case STATE_WALK: 
                //敌人行走 
                transform.Translate(Vector3.forward * Time.deltaTime); 
                break; 
            case STATE_RUN: 
                //敌人朝向主角奔跑 
                if (Vector3.Distance(transform.position, ansform.position) > 3) 
                { 
                    transform.Translate(Vector3.forward * Time.deltaTime * 3); 
                } 
                break; 
 
        } 
    } 
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。