注:该文为学习笔记,具体请看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键才有效果
(当然,我想了一下,也可以写在门的碰撞体控制脚本里,方法很多,都可)