(4.4)工作总结,创建怪物,OnGUI显示伤害

本文档总结了Unity游戏开发中关于怪物功能的设计,分为怪物属性计算、AI行为以及技能效果三个部分。AI部分涉及寻路和技能释放,技能效果通过函数封装,由AI控制触发。此外,还介绍了如何使用OnGUI显示伤害,利用协程解决有参数函数的Invoke调用问题。
摘要由CSDN通过智能技术生成

一.创建怪物
对于怪物的功能我是把他分成三个脚本设计的:
1.怪物属性以及属性计算脚本,包括伤害b不buff等
2.怪物AI,包括怪物自动寻路,技能释放的时机,通过怪物的动画事件来触发技能效果等
3.怪物的技能效果,把技能效果做成一个函数封装起来,由AI来决定释放技能的动作,从而触发技能函数。
二.OnGUI显示伤害

public class DamageShow : MonoBehaviour
{
    /// <summary>
    /// 目标位置
    /// </summary>
    private Vector3 mTarget;
    /// <summary>
    /// 屏幕坐标
    /// </summary>
    private Vector3 mScreen;
    /// <summary>
    /// 伤害数值
    /// </summary>
    public int value;
    /// <summary>
    /// 文本宽度
    /// </summary>
    public float contentWidth = 100;
    /// <summary>
    /// 文本高度
    /// </summary>
    public float contentHeight = 50;
    /// <summary>
    /// GUI坐标
    /// </summary>
    private Vector2 mPoint;
    /// <summary>
    /// 销毁时间
    /// </summary>
    public float freeTime = 0.2f;
    private void OnEnable()
    {
        
    }
    void Update()
    {

        //使文本在重直方向山产生一个偏移

        transform.Translate(Vector3.up * 5.0F * Time.deltaTime);
        //重新计算坐标

        mTarget = transform.position;

        //狭取屏廉坐标

        mScreen = Camera.main.WorldToScreenPoint(mTarget);

        //将屏幕坐标转化为GUI坐标

        mPoint = new Vector2(mScreen.x, Screen.height - mScreen.y);
    }
        void OnGUI()
        {

            //保证自标在摄像机前方

            if (mScreen.z > 0)

                GUI.color = Color.red;

            GUI.skin.label.fontSize = 25;

           //内部使用GUI坐标进行绘制

           GUI.Label(new Rect(mPoint.x, mPoint.y, contentWidth, contentHeight), value.ToString());
           StartCoroutine("Free");
       
            

        }



           IEnumerator Free(){

                yield return new WaitForSeconds(freeTime);
                PoolMgr.Instance.PushObject("Profabs/DamageShow", gameObject);
            }
}

以前一直想用Invoke来调用有参数的函数一直没成功,然后想到了协程。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值