卡片收集2

image.png

image.png

image.png

image.png

image.png

卡片脚本:KaPian.cs

using UnityEngine;
using UnityEngine.UI;

public class KaPian : MonoBehaviour
{
    public int SceneIndex;
    public AudioClip clip;
    private Button btnCloseAudio;
    private bool IsClickImage = true;//只能点击一次卡片

    private void Start()
    {
        transform.GetChild(2).GetComponent<Button>().onClick.AddListener(CloseAudio);
    }

    public void OnClickImage()
    {
        if (!IsClickImage) return;
        IsClickImage = false;

        if (SceneIndex == 13)
        {
           Debug.Log("播放卡片声音:" + (WaSiTuChu.Instance.KaPianNum + 1));
            transform.GetChild(1).gameObject.SetActive(true);//显示收集图片
            WaSiTuChu.Instance.AudioSourceTip.clip = clip;
            WaSiTuChu.Instance.AudioSourceTip.Play();
            WaSiTuChu.Instance.KaPianNum++;
            Debug.Log("卡片数量"+WaSiTuChu.Instance.KaPianNum);
        }
        // if (SceneIndex == 8)
        // {
        //     print("播放卡片声音:" + (GongZiGangShangRen.Instance.KaPianNum + 1));
        //     transform.GetChild(1).gameObject.SetActive(true);
        //     GongZiGangShangRen.Instance.AudioSourceTip.clip = clip;
        //     GongZiGangShangRen.Instance.AudioSourceTip.Play();
        //     GongZiGangShangRen.Instance.KaPianNum++;
        // }
        else if (SceneIndex == 9)
        {
            print("播放卡片声音:" + (PianBangShangRen.Instance.KaPianNum + 1));
            transform.GetChild(1).gameObject.SetActive(true);
            PianBangShangRen.Instance.AudioSourceTip.clip = clip;
            PianBangShangRen.Instance.AudioSourceTip.Play();
            PianBangShangRen.Instance.KaPianNum++;
            Debug.Log("卡片数量" + PianBangShangRen.Instance.KaPianNum);
        }
        else if (SceneIndex == 6)
        {
            print("播放卡片声音:" + (MaoDingZaRen.Instance.KaPianNum + 1));
            transform.GetChild(1).gameObject.SetActive(true);
            MaoDingZaRen.Instance.AudioSourceTip.clip = clip;
            MaoDingZaRen.Instance.AudioSourceTip.Play();
            MaoDingZaRen.Instance.KaPianNum++;
        }
        if (SceneIndex == 1)
        {
            print("播放卡片声音:" + (KuaPengCtrl.Instance.IndexCard + 1));
            transform.GetChild(1).gameObject.SetActive(true);
            KuaPengCtrl.Instance.AudioSourceCard.clip = clip;
            KuaPengCtrl.Instance.AudioSourceCard.Play();
            KuaPengCtrl.Instance.IndexCard++;
            if (KuaPengCtrl.Instance.IndexCard==4&& !KuaPengCtrl.Instance.AudioSourceCard.isPlaying)//他的直接原因显示完全
            {  }
        }

        if (SceneIndex == 2)
        {
            print("播放卡片声音:" + (WeiZhangChengChe.Instance._Index + 1));
            transform.GetChild(1).gameObject.SetActive(true);
            WeiZhangChengChe.Instance.AudioSourceCard.clip = clip;
            WeiZhangChengChe.Instance.AudioSourceCard.Play();
            WeiZhangChengChe.Instance._Index++;
        }


        if (SceneIndex == 3)
        {
            print("播放卡片声音:" + (M_GunTonga.instance.index + 1));
            transform.GetChild(1).gameObject.SetActive(true);
            M_GunTonga.instance.audioSource.clip = clip;
            M_GunTonga.instance.audioSource.Play();
            M_GunTonga.instance.index++;
        }
        
    }
    public void CloseAudio()
    {
        if (SceneIndex == 13)
        {
            if (WaSiTuChu.Instance.AudioSourceTip.isPlaying)
                WaSiTuChu.Instance.AudioSourceTip.Stop();
        }
        // else if (SceneIndex == 8)
        // {
        //     if (GongZiGangShangRen.Instance.AudioSourceTip.isPlaying)
        //         GongZiGangShangRen.Instance.AudioSourceTip.Stop();
        // }
        else if (SceneIndex == 9)
        {
            if (PianBangShangRen.Instance.AudioSourceTip.isPlaying)
                PianBangShangRen.Instance.AudioSourceTip.Stop();
            if (PianBangShangRen.Instance.KaPianNum==6)
            {
                PianBangShangRen.Instance.KaPian.SetActive(false);
                PianBangShangRen.Instance.ChongDongE.SetActive(true);
                PianBangShangRen.Instance.AudioSourceBg.clip = PianBangShangRen.Instance.BgClips[1];
                PianBangShangRen.Instance.AudioSourceBg.Play();
                PianBangShangRen.Instance.AudioSourceTip.clip = PianBangShangRen.Instance.TipClips[3];
                PianBangShangRen.Instance.AudioSourceTip.Play();
            }

        }
        else if (SceneIndex == 6)
        {
            if (MaoDingZaRen.Instance.AudioSourceTip.isPlaying)
                MaoDingZaRen.Instance.AudioSourceTip.Stop();
        }
        else if (SceneIndex == 1)
        {
            if (KuaPengCtrl.Instance.AudioSourceCard.isPlaying)
                KuaPengCtrl.Instance.AudioSourceCard.Stop();
        }
        else if (SceneIndex == 2)
        {
            if (WeiZhangChengChe.Instance.AudioSourceCard.isPlaying)
                WeiZhangChengChe.Instance.AudioSourceCard.Stop();
        }
        else if (SceneIndex==3)
        {
            if (M_GunTonga.instance.audioSource.isPlaying)
                M_GunTonga.instance.audioSource.Stop();
        }
    }
}
using Pvr_UnitySDKAPI;
using System.Collections;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.UI;

public class MaoDingZaRen : GameManager
{
    /// <summary>
    /// 单列模式
    /// </summary>
    public static MaoDingZaRen Instance;
    [Header("主角")]
    public GameObject ART;
    public Transform player;
    [Header("卡片")]
    public GameObject KaPian;
    [Header("-----------------")]
    [Header("特效")]
    #region 特效
    public GameObject ChongDongE;
    public GameObject ChuanYueE;
    #endregion
    [Header("提示播放器")]
    public AudioSource AudioSourceTip;//提示文字播放器
    [Header("提示音")]
    public AudioClip[] TipClips;//对话语音
                                //1.虫洞提示2.
    [Header("背景播放器")]
    public AudioSource AudioSourceBg;//背景音播放器
    [Header("背景音")]
    public AudioClip[] BgClips;//打字机声音

public int KaPianNum;
  

    PlayableDirector timeline0;
    public GameObject pidai;
    public GameObject pidai2;
    public GameObject pidai3;
    public AudioSource wztc;

    private GameObject Env;
    private GameObject Ani;
    private GameObject but;
    private GameObject dh;
    private GameObject exitUI;

    private bool isKa;
    /// <summary>
    /// 初始化
    /// </summary>
    void Init()
    {
        Instance = this;
        timeline0 = GameObject.Find("TimeLine01").GetComponent<PlayableDirector>();

        Env = GameObject.Find("ART");
        Ani = GameObject.Find("Animation");
        but = GameObject.Find("SceneCanvas").GetChild(0).gameObject ;
        dh = ART.GetChild(1).GetChild(13).GetChild(0).GetChild(0).gameObject;
        exitUI = player.GetChild(0).GetChild(0).gameObject;
    }
    private void Start()
    {
        Init();
    }
    
    // Update is called once per frame
    void Update()
    {
        if (exitUI.activeSelf == false && (Controller.UPvr_GetKeyUp(0, Pvr_KeyCode.TRIGGER) || Controller.UPvr_GetKeyUp(1, Pvr_KeyCode.TRIGGER) || Input.GetKeyDown(KeyCode.Space) 
                                           || Input.GetButtonUp("Fire1") || Input.GetKeyDown(KeyCode.JoystickButton0)))
        {
            if (timeline0.time>10 && timeline0.time<90)
            {
                timeline0.time = 90;
            }else if (timeline0.time>95 && timeline0.time<220)
            {
                timeline0.time = 221;
            }
        }

        if (!isKa)
        {
            if (KaPian.activeSelf)
            {
                isKa = true;
                timeline0.Pause();
                StartCoroutine(Kapian());
            }   
        }
    }
   
    IEnumerator Kapian() 
    {
         player.position = new Vector3(0.5f, 1f, -14);
         player.eulerAngles = new Vector3(0, 0f, 0);
        // yield return new WaitForSeconds(1);
        // HeiPing.SetActive(false);
        while (KaPianNum != 6 || AudioSourceTip.isPlaying)//等待卡片收集完毕
        {
           print("当前卡片" + KaPianNum);
            yield return new WaitForSeconds(1);
        }
        KaPian.SetActive(false);
        Debug.LogError("虫洞");
        ChongDongE.SetActive(true);
        AudioSourceBg.clip = BgClips[1];
        AudioSourceBg.Play();
        AudioSourceTip.clip = TipClips[3];
        AudioSourceTip.Play();
    }
    /// <summary>
    /// 移动到虫洞及移动结束结束后剧情
    /// </summary>
    /// <returns></returns>
    IEnumerator ChongDongEnd()
    {
        bool move = true;
        while (move)
        {
            yield return new WaitForFixedUpdate();
            player.LookAt(ChongDongE.transform);
            player.Translate(Vector3.forward * Time.deltaTime * 1);
            if (Vector3.Distance(player.position, ChongDongE.transform.position) < 0.2f)
            {
                AudioSourceBg.Stop();
                move = false;
                ChongDongE.SetActive(false);
                RenderSettings.fog = false;
                ART.SetActive(false);
                ChuanYueE.SetActive(true);
                //隐藏人物
                Ani.SetActive(false);
                Env.SetActive(false);
                AudioSourceBg.clip = BgClips[2];
                AudioSourceBg.loop = true;
                AudioSourceBg.Play();
                yield return new WaitForSeconds(10);
                ChuanYueE.SetActive(false);
                RenderSettings.fog = true;
                ART.SetActive(true);
                AudioSourceBg.Stop();

                timeline0.time = 225.3f;
                timeline0.Play();
                //显示
                Ani.SetActive(true);
                Env.SetActive(true);
            }
        }
    }
    public override void RayButton(Transform t)
    {
        if (t.GetComponent<Button>())
            t.GetComponent<Button_VR>().RayEnter();
        if (Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TRIGGER) || Controller.UPvr_GetKeyDown(1, Pvr_KeyCode.TRIGGER) || Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TOUCHPAD) || 
            Controller.UPvr_GetKeyDown(1, Pvr_KeyCode.TOUCHPAD) || Input.GetKeyUp(KeyCode.Space) || Input.GetButtonUp("Fire1") || Input.GetKeyDown(KeyCode.JoystickButton0))
        {
            t.GetComponent<Button>().onClick.Invoke();
        }
    }
    public override void RayImage(Transform t)
    {
        if (t.GetComponent<Image>())
            t.GetComponent<Image>().color = Color.yellow;
        if (Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TRIGGER) || Controller.UPvr_GetKeyDown(1, Pvr_KeyCode.TRIGGER) || Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TOUCHPAD) || 
            Controller.UPvr_GetKeyDown(1, Pvr_KeyCode.TOUCHPAD) || Input.GetKeyUp(KeyCode.Space) || Input.GetButtonUp("Fire1") || Input.GetKeyDown(KeyCode.JoystickButton0))
        {
            if (t.parent.name == "KaPian")
            {
                print("按下了KaPian");
                t.GetComponent<KaPian>().OnClickImage();
                t.GetComponent<Collider>().enabled = false;
            }
        }
    }
    public override  void RayGo(Transform t)
    {
        if (t.GetComponent<MeshRenderer>())
            t.GetComponent<MeshRenderer>().material.color = Color.white;
        if (Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TRIGGER) || Controller.UPvr_GetKeyDown(1, Pvr_KeyCode.TRIGGER) || Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TOUCHPAD) || 
            Controller.UPvr_GetKeyDown(1, Pvr_KeyCode.TOUCHPAD) || Input.GetKeyUp(KeyCode.Space) || Input.GetButtonUp("Fire1") || Input.GetKeyDown(KeyCode.JoystickButton0))
        {
            switch (t.name)
            {
                case "ChongDong":
                    print("按下了ChongDong。");
                    StartCoroutine(ChongDongEnd());
                    AudioSourceTip.Stop();
                    break;
            }
        }
    }

    public override  void RayButtonUp(Transform t)
    {
        if (t.GetComponent<Button>())
            t.GetComponent<Button_VR>().RayExit();
    }
    public override void RayImageUp(Transform t)
    {
        if (t.GetComponent<Image>())
            t.GetComponent<Image>().color = Color.white;
    }
 }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容