Unity_FPS游戏_Boss模块流程01脚本

本文详细探讨了Unity FPS游戏中的Boss模块,包括BossManager、BossState、BossStateMachine等关键脚本的实现,以及FlyBoss和LandBoss两种类型的Boss行为。同时介绍了Player、ConfigManager和Singleton模式在游戏中的应用,还提到了VRGameManager如何整合这些元素。
摘要由CSDN通过智能技术生成

Boss:

using UnityEngine;
using System.Collections;
public class Boss  {

    //模型
    protected Transform _transform;
    public Transform Transform { get { return _transform; } }

    protected CapsuleCollider _collider;
    public CapsuleCollider Collider { get { return _collider; } }

    protected Animation _ani;
    public Animation Ani { get { return _ani; } }

    protected NavMeshAgent _nav;
    public NavMeshAgent Nav { get { return _nav; } }

    //配置(获取信息并处理行为);
    protected BossCfg _cfg;
    public BossCfg Cfg { get { return _cfg; } }

    protected int _hp;
    public int Hp { get { return _hp; } }

    protected BossStateMachine _machine;
    public BossStateMachine Machine { get { return _machine; } }

    public Boss(BossCfg cfg)
    {
        _cfg = cfg;
        _transform = GameObject.Instantiate(Resources.Load<GameObject>("Boss/" + _cfg.Model)).transform;

        int index = Random.Range(1, ConfigManager.Instance.CountOfBirthPointCfgDic + 1);

        BirthPointCfg birthCfg = ConfigManager.Instance.GetBirthPointCfgByID(index);
        _transform.position = ConfigManager.Instance.GetVector3(birthCfg.Position);
        _transform.eulerAngles = ConfigManager.Instance.GetVector3(birthCfg.EulerAngle);

        _collider = _transform.GetComponent<CapsuleCollider>();
        if (_collider == null)
        {
            _collider = _transform.gameObject.AddComponent<CapsuleCollider>();
        }
        _collider.center = ConfigManager.Instance.GetVector3(_cfg.ColliderCenter);
        _collider.radius = _cfg.ColliderRadius;
        _collider.height = _cfg.ColliderHeight;
        _collider.direction = _cfg.ColliderDirection;

        _ani = _transform.GetComponent<Animation>();

        _nav = _transform.GetComponent<NavMeshAgent>();
        if(_nav == null)
        {
            _nav = _transform.gameObject.AddComponent<NavMeshAgent>();
        }
        _nav.enabled = true;

        if(_machine == null)
        {
            _machine = new BossStateMachine(this);
        }

        Init();
    }

    //boss初始化
    public virtual void Init()
    {
        _hp = _cfg.Hp;
        //Debug.Log("初始化怪物属性");
    }

    //boss更新
    public virtual void Update()
    {
        _machine.DoWork();
        //Debug.Log(_cfg.Name + "更新怪物相关行为");
    }
}

BossManager

using UnityEngine;
using System.Collections.Generic;
using System;
using System.Reflection;

public class BossManager : Singleton<BossManager> {

    private List<Boss> _bossList = new List<Boss>();

    /// <summary>
    /// 添加 
    /// </summary>
    /// <param name="boss"></param>
    public void Add(Boss boss)
    {
        if(!_bossList.Contains(boss))
        {
            _bossList.Add(boss);
        }
    }

    /// <summary>
    /// 移除
    /// </summary>
    public v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值