二十三.游戏终点

游戏终点

1.添加终点标志

请添加图片描述

设置Flag的显示排序为-1,使其显示为在旗杆之后

2.添加碰撞检测Box Collider 2D

在LevelEnd上添加碰撞检测,并调整大小

请添加图片描述

设置碰撞检测为触发器,isTrigger–>true

3.添加关卡完成标识

在UICanvas上添加Text,命名为TextLevelComplete,放在FadeScreen前面,使其被淡入淡出遮挡

请添加图片描述

设置关卡完成显示,字体大小,颜色为白色,中间对齐,并稍稍倾斜

请添加图片描述

4.新建脚本LevelExit,绑定组件到LevelEnd上

在LevelManager.cs中,添加EndLevel()函数,用于实现关卡结束

在LevelExit中,添加碰撞检测函数,判断碰撞的是当前角色,即调用LevelManager中的EndLevel()

private void OnTriggerEnter2D(Collider2D other)
{
    if(other.tag == "Player")
    {
        LevelManager.sInstance.EndLevel();
    }
}

5.PlayerController

添加参数,用于控制是否能操作

在Update中,与PauseMenu.sInstance.isPause判断并列,加入&&判断

public bool stopInput;      //控制能否操作

if(PauseMenu.sInstance.isPause == false && !stopInput)

6.LevelManager

添加隔段时间调用函数,实现用户不能操控,以及淡入效果

public void EndLevel()
{
    StartCoroutine(EndLevelCo());
}
//隔段时间调用
public IEnumerator EndLevelCo()
{
    //关卡完成后,用户不能再操控
    PlayerController.sInstance.stopInput = true;

    yield return new WaitForSeconds(1.5f);
    //关卡完成后,淡出效果
    UIController.sInstance.FadeToBlack();
}

7.摄像机

关卡完成后,需要摄像机停止跟随角色

在CameraController中,添加参数,单例,并在Update中加入stopFollow控制

public bool stopFollow; //停止跟随

public static CameraController sInstance;
private void Awake()
{
    sInstance = this;
}

void Update()
{
    if(!stopFollow)
    {
        //......
    }
}

在LevelManager中public IEnumerator EndLevelCo()加入调用摄像机不跟随

public IEnumerator EndLevelCo()
{
    //关卡完成后,用户不能再操控
    PlayerController.sInstance.stopInput = true;
    //摄像机停止跟随
    CameraController.sInstance.stopFollow = true;

    //......
}

8.关卡完成提示

UIController中添加参数

public GameObject levelCompleteText;    //关卡完成提示

Unity中设置绑定TextLevelComplete

请添加图片描述

在LevelManager中添加参数levelToLoad,指向关卡完成后跳转的场景,并引入场景管理

using UnityEngine.SceneManagement;

public string levelToLoad;  //关卡完成后加载的场景

加入跳转新场景

public IEnumerator EndLevelCo()
{
    //关卡完成后,用户不能再操控
    PlayerController.sInstance.stopInput = true;
    //摄像机停止跟随
    CameraController.sInstance.stopFollow = true;
    //显示关卡完成提示
    UIController.sInstance.levelCompleteText.SetActive(true);

    yield return new WaitForSeconds(1.5f);
    //关卡完成后,淡出效果
    UIController.sInstance.FadeToBlack();

    yield return new WaitForSeconds((1f / UIController.sInstance.fadeSpeed) + 0.25f);
    //关卡完成后,跳转新场景
    SceneManager.LoadScene(levelToLoad);
}

在Unity中,指定levelToLoad场景(暂指定MainMenu)

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值