Unity入门项目John Lemon‘s Haunted Jaunt中的GameEnding脚本

项目文档链接:John Lemon's Haunted Jaunt 项目教程 (适用于3D初学者) - Unity Learn

总代码

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

public class GameEnding : MonoBehaviour
{
    public float fadeDuration = 1f;
    public float displayImageDuration = 1f;
    public GameObject player;
    public CanvasGroup exitBackgroundImageCanvasGroup;
    public CanvasGroup caughtBackgroundImageCanvasGroup;
    public AudioSource exitAudio;
    public AudioSource caughtAudio;
    bool m_IsPlayerAtExit;
    bool m_IsPlayerCaught;
    float m_Timer;
    bool m_HasAudioPlayed;
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject == player)
        {
            m_IsPlayerAtExit = true;
        }
    }

    public void CaughtPlayer()
    {
        m_IsPlayerCaught = true;
    }

    void Update()
    {
        if (m_IsPlayerAtExit)
        {
            EndLevel(exitBackgroundImageCanvasGroup, false,exitAudio);
        }
        else if (m_IsPlayerCaught)
        {
            EndLevel(caughtBackgroundImageCanvasGroup, true,caughtAudio);
        }
    }

    void EndLevel(CanvasGroup imageCanvasGroup, bool doRestart,AudioSource audioSource)
    {
        if (!m_HasAudioPlayed)
        {
            audioSource.Play();
            m_HasAudioPlayed = true;
        }
        m_Timer += Time.deltaTime;
        imageCanvasGroup.alpha = m_Timer / fadeDuration;

        if (m_Timer > fadeDuration + displayImageDuration)
        {
            if (doRestart)
            {
                SceneManager.LoadScene(0);
            }
            else
            {
                Application.Quit();
            }
        }
    }
}

---------------------------------------------------------------------------------------------------------------------------------

CanavasGroup 是Unity中的画布组件

OnTriggerEnter用于检测游戏对象触发一个碰撞器的事件 传入的参数Collider是触发事件的目标

other.GameObject是触发事件附加的游戏对象

player对应Unity组件中的Player

使用时记得打开Collider组件中的IS trigger选项

CaughtPlayer为受伤判定


传入的参数分别是 Unity中的Canvas组件、一个用于判断是否重开的BOOL 以及AudioSource组件

第一个if用于判断是否播放音乐

Time.deltaTime是一个表示上一帧到当前帧所用时间的变量,表示每一帧的间隔

imageCanvasGroup.alpha = m_Timer / fadeDuration;是调节Canvas中的alpha数值的方法以此调节动画的透明度。可以实现动画逐渐淡出或淡入的效果

SceneManager.LoadScene(0)是SceneManager类的一个方法 用于重新加载场景

Application.Quit();是Unity提供的一个退出游戏的方法,是一个不可逆的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值