Unity3D+moba+技能指示器(一)

1 功能描述

 

类似王者荣耀,按下的技能如果是需要预判的或者是可以选择单一目标,产生一个摇杆,在地形上显示辅助的UI提示。存在以下几种情况:

1.扇形范围技能

2.方向性技能

3.指向范围性技能

4.指向技能

这些地形上的UI提示共性是:1.外围大圈的范围;2.内圈UI具有大小,方向,范围角度的特点

2 详细设计

要点:

1.所有英雄的技能数量都是固定的,开始战斗时,读表载入技能。

2.Ui上技能摇杆每个都是固定,对应该英雄的第几个技能

3.技能属性有id,施法范围(大圆半径),影响范围(内圈),技能提示种类

4.每个技能摇杆要装填相对应的技能信息。

2.1指向范围性技能

主要是摇杆上thumb与bg的相对位置转化为技能提示器上PointRange与bg

的相对位置,然后设置PointRange的loaclPosition即可。如图所示,技能会攻击上方的敌人。

2.2方向性技能

得到摇杆thumb相对bg位置localPosition的标准化向量,然后改变Direction的方向即可。如图所示,技能会攻击下方敌人。

当摇杆移动时,方向性技能和指向范围性指示器调用如下代码:

/// <summary>
    /// 指示器位置更新
    /// </summary>
    /// <param name="skill">摇杆上绑定的技能信息</param>
    /// <param name="dir">摇杆方向向量</param>
    /// <param name="obj">激活的类型指示器</param>
    public void hintUpdate(SkillCtrl skill, Vector2 dir, GameObject obj)
    {
        float bgRange = skill.m_disRange;//施法距离
        Vector3 scale = m_bg.transform.localScale;
        scale.x = bgRange * 0.1f * 2.0f;
        scale.z = scale.x;
        m_bg.transform.localScale = scale;

        float smallRange = skill.m_smallRange;//影响范围
        Vector3 scaleSmall = Vector3.zero;
        if (skill.m_hintType == enSkillHintType.PointRange)
        {
            scaleSmall.x = 0.1f * smallRange * 2.0f;
            scaleSmall.z = scaleSmall.x;
        }
        else
        {
            scaleSmall.x = 0.1f * smallRange;
            scaleSmall.z = 1.0f;
        }
        scaleSmall.y = 1.0f;
        obj.transform.localScale = scaleSmall;

        if (skill.m_hintType == enSkillHintType.PointRange )
            obj.transform.localPosition = new Vector3(dir.x * bgRange, 0, dir.y * bgRange );
        else
        {
            Vector3 posWorld = obj.transform.position;
            obj.transform.LookAt(new Vector3(posWorld.x + dir.x, posWorld.y, posWorld.z + dir.y));
        }

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四夕立羽

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值