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

物品展示部分

2-脚本操纵物体弹出

思路介绍

我们可以使用一个数或者是布尔变量来存储当前物品状态,该回收还是该弹出,但是我们发现,物品有至少三个状态,即弹出、停止和回收,因此仅仅使用一个布尔变量无法解决该问题,因此我决定使用两个布尔变量flag1和flag2来协作共同完成判定。当flag1为true时物品弹出,并修改flag1为false;当flag2为true时物品回收,并修改flag2为false.这样可以保证弹出和回收的独立性。

脚本编写

首先我们需要设定两个布尔变量,flag1和flag2分别应用于控制物体弹出和收回,接着我们创建一个string变量存储动画名称,以及创建一个动画变量存储自身的动画组件

    public bool flag1 = false;
    public bool flag2 = false;
    public string AnimName ;
    private Animation anim;

在start方法中对动画变量进行初始化

    void Start()
    {
        anim = GetComponent<Animation>();
        
    }

接着我们在Update方法中放入两个if语句用于判断该弹出还是该回收物品
弹出物品

if (flag1)
        {
            if (anim.isPlaying == false)
            {
                anim[AnimName].speed = 1;
                anim.Play(AnimName);
                flag1 = false;
            }
        }

回收物品

if (flag2)
        {
            if (anim.isPlaying == false)
            {
                anim[AnimName].time = anim[AnimName].length;
                anim[AnimName].speed = -1;
                anim.Play(AnimName);
                flag2 = false;
            }
        }

总体代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class display_item : MonoBehaviour
{
    public bool flag1 = false;
    public bool flag2 = false;
    public string AnimName ;
    private Animation anim;
    // Start is called before the first frame update
    void Start()
    {
        anim = GetComponent<Animation>();
        
    }

    // Update is called once per frame
    void Update()
    {
        if (flag1)
        {
            if (anim.isPlaying == false)
            {
                anim[AnimName].speed = 1;
                anim.Play(AnimName);
                flag1 = false;
            }
        }

        if (flag2)
        {
            if (anim.isPlaying == false)
            {
                anim[AnimName].time = anim[AnimName].length;
                anim[AnimName].speed = -1;
                anim.Play(AnimName);
                flag2 = false;
            }
        }
    }
}
©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值