Session21:场景控制SceneManager
这节课我们来为游戏添加场景控制的效果。
死亡检测
首先设置角色死亡的效果,这里看弹幕说有用y轴坐标判断的,好像也行,但感觉用trigger来检测确实应用场景更广一些,比如角色碰到突刺的物体就死亡,用y轴坐标判断显然是无法做到的。
可以用一个空物体的collider来实现死亡检测
下面来实现代码:
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
//触发器检测
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Collection")
{
collectionAudio.Play();
Destroy(collision.gameObject);
score++;
cherryNumber.text = score.ToString();
}
if (collision.tag == "DeadLine")
{
//关闭第一个AudioSource,这里的第一是指人物身上组件的顺序
GetComponent<AudioSource>().enabled = false;
//延迟2s调用
Invoke("Restart", 2f);
}
}
切换场景
前面添加的Dialog,当我们走到门那里的时候按下E可以进入下个场景,现在我们来实现。
因为只有角色处于door的位置时按下E才能切换场景,所以很显然我们可以把脚本挂在Panel上,因为它也是只有在door那里才会触发的
public class EnterScene : MonoBehaviour
{
void Update()
{
if(Input.GetKeyDown(KeyCode.E))
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
}
}
这里的buildIndex是指这里的序号: