示例#1
0
    public static void CreateSkillWarning(string path, SkillWarningType type, float data1, float data2, float duration, Vector3 pos, Quaternion rot, bool follow = false, Transform follower = null, System.Action <SkillWarning> callback = null)
    {
        ResourceSystem.LoadAsync <GameObject>(path, (o) => {
            GameObject go = o as GameObject;
            if (go == null)
            {
                return;
            }
            SkillWarning warning = go.GetComponent <SkillWarning>();
            if (warning == null)
            {
                return;
            }
            GameObject obj = GameObject.Instantiate(go);
            if (obj == null)
            {
                return;
            }
            obj.name = "skill_warning_" + type.ToString();
            warning  = obj.GetComponent <SkillWarning>();
            if (warning == null)
            {
                return;
            }
            warning.skillWarningType = type;
            warning.Data1            = data1;
            warning.Data2            = data2;
            warning.Duration         = duration;
            warning.Follow           = follow;
            warning.mFollower        = follower;

            warning.mStartTime = Time.realtimeSinceStartup;

            obj.transform.position = pos;
            obj.transform.rotation = rot;

            warning.Decal.upHeight   = 2.0f;
            warning.Decal.downHeight = 2.0f;
            warning.Decal.offsetY    = 0.2f;
            warning.Decal.BuildMesh();

            if (callback != null)
            {
                callback(warning);
            }
        });
    }
示例#2
0
    // 技能图标开始拖拽(按下);
    private void OnSkillBtnPress(GameObject btn)
    {
        SkillBtnData data = null;

        if (!skillDatas.TryGetValue(btn, out data))
        {
            return;
        }
        data.btnImage.enabled = false;
        data.joystickBG.SetActive(true);
        if (data.opType != SkillPreOpType.TargetDirLine &&
            data.opType != SkillPreOpType.TargetDirFan &&
            data.opType != SkillPreOpType.TargetPos)
        {
            return;
        }
        data.joystick.gameObject.SetActive(true);

        Vector3 touchPos = GetPointPos();

        data.joystick.position = touchPos;
        data.startPos          = new Vector2(touchPos.x, touchPos.y);

        Player player = GameController.mMainPlayer;

        if (player == null)
        {
            return;
        }
        if (data.opType == SkillPreOpType.TargetDirLine)
        {
            float dist  = data.opData1 * 0.001f;
            float width = data.opData2 * 0.001f;
            SkillWarning.CreateSkillWarning("GUI/SkillWarning/Prefabs/warning_line", SkillWarningType.PreOpRect, width, dist,
                                            -1.0f, player.Position, player.transform.rotation, true, player.transform, (o) =>
            {
                o.NavLayer   = player.NavLayer;
                data.warning = o;
            });
        }
        else if (data.opType == SkillPreOpType.TargetDirFan)
        {
            float dist  = data.opData1 * 0.001f;
            float angle = (float)data.opData2;
            SkillWarning.CreateSkillWarning("GUI/SkillWarning/Prefabs/warning_fan", SkillWarningType.PreOpFan, dist, angle,
                                            -1.0f, player.Position, player.transform.rotation, true, player.transform, (o) =>
            {
                o.NavLayer   = player.NavLayer;
                data.warning = o;
            });
        }
        else if (data.opType == SkillPreOpType.TargetPos)
        {
            float radius = data.opData2 * 0.001f;
            SkillWarning.CreateSkillWarning("GUI/SkillWarning/Prefabs/warning_circle", SkillWarningType.PreOpCircle, radius, radius,
                                            -1.0f, player.Position, player.transform.rotation, true, player.transform, (o) =>
            {
                o.NavLayer   = player.NavLayer;
                data.warning = o;
            });
        }
    }