Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Unity3D+moba+技能指示器(一)

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

編輯:關於Android編程

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的方向即可。如圖所示,技能會攻擊下方敵人。

\

 

當搖桿移動時,方向性技能和指向范圍性指示器調用如下代碼:

/// 
    /// 指示器位置更新
    /// 
    ///搖桿上綁定的技能信息
    ///搖桿方向向量
    ///激活的類型指示器
    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));
        }

    }


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved