Ejemplo n.º 1
0
    public void OnPointerClick(PointerEventData p)
    {
        RectTransform rectTransform = GetComponent <RectTransform>();

        minimapUIActualWdithAndHeight = new Vector2(rectTransform.sizeDelta.x * rectTransform.localScale.x, rectTransform.sizeDelta.y * rectTransform.localScale.y);
        minimapUIRightUpPos           = new Vector2(rectTransform.position.x, rectTransform.position.y);

        scaleXY = new Vector2(rectTransform.position.x / (rectTransform.localPosition.x * 2), rectTransform.position.y / (rectTransform.localPosition.y * 2));

        screenPosInMiniMapCamera = new Vector2(1.0f - (rectTransform.position.x - p.position.x) / (minimapUIActualWdithAndHeight.x * scaleXY.x), 1.0f - (rectTransform.position.y - p.position.y) / (minimapUIActualWdithAndHeight.y * scaleXY.y));

//        Debug.Log("右上角实际位置:" + rectTransform.position);
//        Debug.Log("缩放值:"+scaleXY);
//        Debug.Log("鼠标点击位置:"+p.position);
//        Debug.Log("左下角实际位置:" + new Vector2(rectTransform.position.x-minimapUIActualWdithAndHeight.x*scaleXY.x, rectTransform.position.y - minimapUIActualWdithAndHeight.y * scaleXY.y));
//        Debug.Log("screenPosInMiniMapCamera:" + screenPosInMiniMapCamera);

        ray = miniMapCamera.GetComponent <Camera>().ViewportPointToRay(new Vector3(screenPosInMiniMapCamera.x, screenPosInMiniMapCamera.y, 0.0f));

        Debug.DrawLine(ray.origin, ray.origin + ray.direction * 1000);

        if (Physics.Raycast(ray, out hit, 1000))
        {
            Debug.Log(hit.collider.name);

            ColliderTriggerButton c = hit.transform.GetComponent <ColliderTriggerButton>();
            ColliderTriggerButton.touchRayCastFrom = ColliderTriggerButton.TouchRayCastFrom.Minimap;
            if (c != null)
            {
                c.ExeTriggerEvent(null);
            }
        }
    }
Ejemplo n.º 2
0
    public void GenPoint360()
    {
        Debug.Log("GenPoint360");

        for (int i = 0; i < point360Floors.Length; i++)
        {
            ColliderTriggerButton[] childTran = point360Floors[i].colliderTriggerRoot.GetComponentsInChildren <ColliderTriggerButton>();

            for (int k = 0; k < childTran.Length; k++)
            {
                DestroyImmediate(childTran[k].gameObject);
            }

            for (int j = 0; j < point360Floors[i].cubemapGroup.Length; j++)
            {
                string[] splitNameString = point360Floors[i].cubemapGroup[j].name.Split('_');

                //          Debug.Log(splitNameString.Length);
                if (splitNameString.Length != 4)
                {
                    Debug.LogError(point360Floors[i].cubemapGroup[j].name + "名字不标准");
                    return;
                }

                string  cubemapName = splitNameString[0];
                float   fx, fy, fz;
                Vector3 pos = new Vector3();

                if (float.TryParse(splitNameString[1], out fx) && float.TryParse(splitNameString[2], out fy) && float.TryParse(splitNameString[3], out fz))
                {
                    if (posUnit == Unit.mm)
                    {
                        fx = 0.001f * fx;
                        fy = 0.001f * fy;
                        fz = 0.001f * fz;
                    }
                    else if (posUnit == Unit.cm)
                    {
                        fx = 0.01f * fx;
                        fy = 0.01f * fy;
                        fz = 0.01f * fz;
                    }

                    if (posUpAxe == UpAxe.Y)
                    {
                        pos = new Vector3(fx, fy, fz);
                    }
                    else
                    {
                        pos = new Vector3(-fx, fz, fy);
                    }

                    GameObject point = GameObject.Instantiate(point360Perfab, Vector3.zero, new Quaternion(), point360Floors[i].colliderTriggerRoot);
                    point.name = cubemapName;
                    point.transform.localPosition = new Vector3(pos.x, pos.y - baseHeight, pos.z);

                    ColliderTriggerButton co = point.GetComponent <ColliderTriggerButton>();
                    co.btnNameForRemote = cubemapName;

                    //设置colliderTriggerTrue的按钮事件
                    BaseEventDelegate colliderTriggerTrue = new BaseEventDelegate();
                    colliderTriggerTrue.parameterTargetSlot      = new int[] { 0, 6, 2 };
                    colliderTriggerTrue.parameterList            = new EventParametar[3];
                    colliderTriggerTrue.parameterList[0].pObject = point360Floors[i].cubemapGroup[j];
                    colliderTriggerTrue.parameterList[1].pVec3   = new Vector3(point.transform.position.x, point.transform.position.y + baseHeight, point.transform.position.z);
                    colliderTriggerTrue.parameterList[2].pFloat  = 0;
                    colliderTriggerTrue.excuteMethodName         = "ChangeCubemap";
                    colliderTriggerTrue.targetMono = this;
                    colliderTriggerTrue.currentEditorChooseFunName = "Point360Manager/ChangeCubemap";
                    colliderTriggerTrue.lastEditorChooseFunName    = "Point360Manager/ChangeCubemap";

                    co.trueEventList.Add(colliderTriggerTrue);
                }
                else
                {
                    Debug.LogError(point360Floors[i].cubemapGroup[j].name + "位置信息错误,请检查!");
                }
            }
        }
    }