创新项目实训实践笔记-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;
}
}
}
}