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

    技术2022-07-11  115

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

    物品展示部分2-脚本操纵物体弹出思路介绍脚本编写

    物品展示部分

    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; } } } }
    Processed: 0.021, SQL: 9