栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

unity2D:死亡判断、场景切换

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity2D:死亡判断、场景切换

注:该文为学习笔记,具体请看b站upMichael-Studio的unity教程2D入门:13敌人Enemy!

环境:unity2020.3

本节内容:像下图这种游戏,玩家掉落后判断游戏结束,以及通关后切换到下一个场景

死亡判断

 方法:在最下面添加一个长条形的碰撞体(但应该也可以判断Player的Position——如果y的值小于某值)这里先按照碰撞体来做

添加一个如下图的碰撞体,记得勾选trigger

 然后是代码部分:首先,头文件引用需要多加一个

using UnityEngine.SceneManagement;//关于场景的操作都在这个库里面

这个库里面内容很多,这里只会用到两个函数,一个是LoadScene——加载场景,一个是GetActiveScene——当前场景的名字

    private void OnTriggerEnter2D(Collider2D obj) 

    {

        if(obj.tag=="DeadLine")//该碰撞体的GameObject的Tag记得设置一下

        {

            SceneManager.LoadScene(SceneManager.GetActiveScene().name);

        }

    }

但一般死了之后肯定不是立刻从新开始,如果想要延迟几秒再调用一个函数可以使用

Invoke("Restart",1f);//第一个参数是调用的函数名,第二个参数是延迟的时间

切换场景

前情回顾:走到房子处,弹出提示弹窗,按下E键切换场景

 现在我们先写一个“按下E键切换场景”的脚本

注意:GetButtonDown 和 GetKeyDown的区别,以及Keycode是什么

另外“SceneManager.GetActiveScene().buildIndex+1”意思是,切换场景到当前场景的下一个场景,具体的顺序按照File——Buildsetting里面的来

public class EnterNextScene : MonoBehaviour
{
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.E))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex+1);
        } 
    }
}

这个很简单,但问题是要挂在谁身上呢?

——由于这里我们吧检测“是否按下E键”放在了Update里,也就是说在该Object的Active状态是true的时候,一直都在检测E键,这时候误触无疑会带来很大的麻烦,所以应该挂在弹窗上,因为弹窗只是暂时的,也只有当弹窗弹出的时候按下E键才有效果

(当然,我想了一下,也可以写在门的碰撞体控制脚本里,方法很多,都可)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/902053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号