创新项目实训实践笔记-9

物品展示部分

3-实体操控物体弹出

思路介绍

刚开始的时候,我想的是,使用一个button来控制物体的弹出和回收,将button命名为display,点击button后物体会弹出,同时修改button的text为back,再次点击button即可回收物品。这样想来,其实比较好实现,也比较方便,但是如果每一个类似的功能都使用按钮来控制,一方面会早场界面中存在大量按钮,导致界面杂乱无章;另一方面总是使用一个技术来实现,并不能很好的达到学习的目的。因此,我决定把弹出和回收的方法使用滑动手机的方式实现,恰逢队友实现了开窗和关窗的功能,我决定将该功能整合进队友的代码中,实现开窗后,物体弹出,关窗后,物体回收,这样可以简化用户的操作,也可以使得用户的观感提升。

脚本实现

首先我们阅读一下队友的代码

if (fingerSegmentX > 0)
                {
                    Debug.Log("right");
                    //开窗操作
                    if (!windowState)
                    {
                        if (anim.isPlaying == false) //判断该动画是否正在播放
                        {
                            anim[animName].speed = 1;
                            anim.Play(animName); // 播放动画
                            windowState = !windowState; // bool值取反
                        }
                    }
                }
                else
                {
                    Debug.Log("left");
                    //关窗操作
                    if (windowState)
                    {
                        if (anim.isPlaying == false) //判断该动画是否正在播放
                        {
                            // 设置开始播放的时间为最后的时刻,默认是从0s开始播放的
                            anim[animName].time = anim[animName].length;
                            anim[animName].speed = -1;
                            anim.Play(animName); // 播放动画
                            windowState = !windowState; // bool值取反
                        }
                    }
                }

在这一部分,实现了开窗和关窗的逻辑,因此我们要在这里整合我们的代码。
首先,要实现这一操作,就需要获取到上一篇博客中我们完成的脚本中的两个flag的值,以便进行修改,因此我们创建一个gameobject

private GameObject item;

在start方法中对其进行赋值

item = GetComponent<change_items>().nowItem;

然后在开窗部分修改其flag1的值为true

if (fingerSegmentX > 0)
                {
                    Debug.Log("right");
                    //开窗操作
                    if (!windowState)
                    {
                        if (anim.isPlaying == false) //判断该动画是否正在播放
                        {
                            anim[animName].speed = 1;
                            anim.Play(animName); // 播放动画
                            windowState = !windowState; // bool值取反
                            item.GetComponent<display_item>().flag1 = true;
                        }
                    }
                }

然后在关窗部分修改其flag2的值为true

 else
                {
                    Debug.Log("left");
                    //关窗操作
                    if (windowState)
                    {
                        if (anim.isPlaying == false) //判断该动画是否正在播放
                        {
                            // 设置开始播放的时间为最后的时刻,默认是从0s开始播放的
                            anim[animName].time = anim[animName].length;
                            anim[animName].speed = -1;
                            anim.Play(animName); // 播放动画
                            windowState = !windowState; // bool值取反
                            item.GetComponent<display_item>().flag2 = true;
                        }
                    }
                }

这样就可以在开窗关窗时实现物体的弹出和回收操作。

©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值