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键才有效果

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

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Karon_NeverAlone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值