示例#1
0
    //改变选中的组件
    public void ChangeCheckedObj(GameObject obj)
    {
        Debug.Log("ChangeCheckedObj obj.name=" + obj.name);
        var parentObj = obj;

        if (currentCheckObj != null)
        {
            ClickAndRotate car = currentCheckObj.gameObject.GetComponent <ClickAndRotate>();
            car.SetChecked(false);
        }
        else
        {
            //第一个选中的是女孩
            _spr = parentObj.GetComponent <SpriteRenderer>();
        }
        currentCheckObj = obj;

        ClickAndRotate ca = parentObj.GetComponent <ClickAndRotate>();

        if (ca.RotateObj != null)
        {
            Debug.Log("parentObj car.RotateObj != null");
            parentObj = ca.RotateObj;
        }
        //旋转
        if (ca.OpType == 1)
        {
            choose.SetActive(true);
            // choose2.SetActive(false);
            choose.transform.SetParent(parentObj.transform);
            choose.transform.position = parentObj.transform.position;
            // choose2.transform.parent = null;
        }
        //滑动
        else if (ca.OpType == 2)
        {
            choose.SetActive(false);
            // choose2.SetActive(true);
            // choose2.transform.SetParent(parentObj.transform);
            // choose2.transform.position = parentObj.transform.position;
            choose.transform.parent = null;
        }
        // Debug.Log("Choose set true parentObj.name=" + parentObj.name);
        // choose.transform.parent = parentObj.transform;
        // choose.transform.position = parentObj.transform.position;
        // Debug.Log("set Choose parent obj choose.transform.position=" + choose.transform.position);
    }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        // Debug.Log("ActiveType=" + ActiveType + ",lastShiningTime=" + lastShiningTime);
        if (IsPlaying)
        {
            if (AnimationObj == null)
            {
                ResetInfo();
                //隐藏激活前的组件
                gameObject.SetActive(false);
                ActivedObj.SetActive(true);
                ClickAndRotate car = ActivedObj.GetComponent <ClickAndRotate>();
                car.SetChecked(true);
            }
            else
            {
                bool changeAniSpr = false;
                if (framePlayTime >= DeltaPerFrame)
                {
                    //正向播放且当前帧数等于最后一帧 播放完成
                    if (!IsOpposePlay)
                    {
                        if (frameIndex >= Frames.Length - 1)
                        {
                            ResetInfo();
                            //动画播放完成,隐藏播放动画的组件
                            AnimationObj.SetActive(false);
                            //显示激活后的组件
                            ActivedObj.SetActive(true);
                            //隐藏激活前的组件
                            gameObject.SetActive(false);
                            ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null);
                            return;
                        }
                        else
                        {
                            frameIndex++;
                            changeAniSpr = true;
                        }
                    }
                    //反向播放回到第一帧,播放结束
                    else
                    {
                        if (frameIndex <= 0)
                        {
                            ResetInfo();
                            //动画播放完成,隐藏播放动画的组件
                            AnimationObj.SetActive(false);
                            ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null);
                            return;
                        }
                        else
                        {
                            frameIndex--;
                            changeAniSpr = true;
                        }
                    }
                    framePlayTime = 0;
                }

                if (changeAniSpr)
                {
                    SpriteRenderer aniSpr = AnimationObj.GetComponent <SpriteRenderer>();
                    Debug.Log("frameIndex=" + frameIndex + ",Frames.length=" + Frames.Length);
                    aniSpr.sprite = Frames[frameIndex];
                    ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null);
                }

                framePlayTime += Time.deltaTime;
                if (ActiveType == 2)
                {
                    lastShiningTime -= Time.deltaTime;
                    if (lastShiningTime < 0)
                    {
                        lastShiningTime = 0;
                        //正向播放改反向
                        if (!IsOpposePlay)
                        {
                            //持续照射时间归零,开始反向播放动画
                            IsOpposePlay = true;
                            //重置framePlayTime
                            framePlayTime = 0;
                            ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null);
                        }
                    }
                }
            }
        }

        if (ActiveType == 3)
        {
            lastShiningTime -= Time.deltaTime;
            if (lastShiningTime < 0)
            {
                lastShiningTime = 0f;
                //设置播放状态为播放中
                if (!IsPlaying)
                {
                    IsPlaying = true;
                    //向激活方向播放
                    IsOpposePlay      = false;
                    sr.material.color = new Color(1, 1, 1, 0);
                    //设置动画节点显示
                    AnimationObj.SetActive(true);
                    //重置framePlayTime
                    framePlayTime = 0;
                    ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null);
                }
            }
        }
    }