密室逃脱
本课属于 Coddy Unity 学习旅程的“物理与游戏玩法”单元。第 70 课,共 71 课。
一个带密码锁的密室。地板上有三块灰色压力板,北墙上的门只有在玩家按正确顺序踩上它们时才会打开:压力板 1、压力板 2、压力板 3。房间里没有任何提示说明哪块压力板对应哪个编号。踩错压力板会让密码重新开始,并让所有压力板闪红一秒。打开的门会保持开启几秒,然后再次关上,但绝不会夹到玩家:玩家站在门口时,门会保持等待。
Player 脚本已准备就绪:方向键可以控制玩家行走,玩家被标记为 Player,并位于 Player 图层上。编写两个脚本:在每块压力板上编写 Plate,在锁上编写 CodeLock。
挑战
困难连接踏板和密码锁,顺序是:1、2、3。
- 在
Plate中,当Player进入时,调用codeLock.Press(number);。 - 在
Press中,使用int next = 1:匹配时记录"Plate " + number并加 1;达到 3 后,记录Unlocked,重置next。 - 否则,记录
Wrong plate,重置next,运行协程:将踏板设为Color.red,等待 1 秒,然后设为Color.gray。
按“开始”并找出顺序,然后点击“检查”。
亲手试试
using System.Collections;
using UnityEngine;
public class CodeLock : MonoBehaviour
{
[SerializeField] private Renderer[] plates;
[SerializeField] private GameObject door;
[SerializeField] private Transform doorway;
[SerializeField] private float openTime = 4f;
public void Press(int number)
{
// 检查密码;输错时让板子闪烁;按下第 3 块板子后打开门
}
}
物理与游戏玩法中的所有课
自己练习: Unity 在线编辑器