How to make a DOOM CLONE in Unity || E1M6 Doors and Keys

SpawnCampGames
18 Feb 202115:55

Summary

TLDR本视频教程介绍了如何在Doom克隆游戏中添加一个带有钥匙和敌人生成系统的门。首先创建一个空的游戏对象作为门的基础,并添加门框和门作为子对象。使用Unity的标准立方体或ProBuilder工具来构建门的模型,并确保每个部分都有碰撞器。接着,通过动画窗口创建门的关闭和开启动画,并在Animator窗口中设置动画状态和转换。为了检测玩家,添加一个触发器和脚本,当玩家触发时,根据玩家是否拥有相应的钥匙来打开门或激活敌人生成区域。最后,创建钥匙拾取脚本,并将其与门和钥匙拾取对象关联,以实现游戏逻辑。视频还展示了如何将门和钥匙拾取设置为预制件,以便在构建游戏关卡时重复使用。

Takeaways

  • 🚪 在视频中,将向Doom克隆游戏中添加一个包含钥匙和敌人生成系统的门。
  • 🛠️ 门将分为三部分构建:门基座、门框和门本身,使用Unity的空游戏对象和标准立方体或ProBuilder来建模。
  • 🎨 为门添加材料,包括基本颜色以及红、蓝、绿三种颜色,以区分不同类型的门。
  • 🔑 制作门动画,包括门的关闭状态(idle)和开启状态(open),并使用Unity的动画窗口来创建动画剪辑。
  • 📂 动画剪辑将保存在动画剪辑文件夹中,并通过动画器窗口设置从默认状态到开门状态的转换。
  • 👤 为检测玩家,将在门对象上添加一个盒子碰撞器,并设置为触发器,同时添加一个脚本来控制门的逻辑。
  • 🔒 门脚本将检测玩家是否进入触发器,并在动画器中设置触发器来打开门。
  • 👾 门还将负责在开门后激活区域内的敌人,通过设置一个公共游戏对象来控制敌人的生成。
  • 🔄 创建三种不同颜色的门变体,每种门需要特定的钥匙才能打开。
  • 🗝️ 玩家将有一个库存系统来存储钥匙,通过脚本控制哪些钥匙被收集。
  • 🔄 制作钥匙拾取器,当玩家触发时,将更新玩家库存中的钥匙状态,并销毁钥匙对象。

Q & A

  • 在视频中,如何为Doom克隆游戏添加门系统?

    -在视频中,首先创建一个新的空GameObject作为门的基础,然后将其变换归零。接着,作为子对象添加门框和门的空GameObject,并将门的各个部分放入相应的空GameObject中。

  • 使用Unity标准立方体构建门框和门有哪些步骤?

    -使用Unity标准立方体构建门框和门的步骤包括:使用多个标准Unity立方体将它们拼接在一起形成门框和门,只要保持结构不变,任何制作方式都可以。

  • 为什么选择使用ProBuilder来构建门?

    -选择使用ProBuilder是因为它是一个强大的工具,可以在Unity中进行模型构建,类似于在Unity内部建模。

  • 如何为门添加动画?

    -为门添加动画需要打开动画窗口,选择门的空GameObject,创建新的动画剪辑,命名为'door idle',保存在动画剪辑文件夹中。然后创建另一个动画剪辑'door open',记录开门动作的关键帧。

  • 如何设置门的动画状态?

    -在Animator窗口中设置门的动画状态,创建一个触发器'open door',并在默认剪辑和'door open'剪辑之间创建过渡。

  • 如何检测玩家是否进入门的触发区域?

    -在门的主GameObject上创建一个BoxCollider,并设置为'Is Trigger'。然后添加一个名为'door'的脚本,该脚本包含逻辑以检测玩家是否进入触发区域,并在Animator中设置触发器。

  • 如何让门在玩家触发后打开?

    -在'door'脚本中,使用'void OnTriggerEnter'函数来检测玩家是否触发了门。如果是玩家,使用'doorAnim.SetTrigger'方法和字符串'open door'来打开门。

  • 如何防止门在打开动画结束后循环播放?

    -在项目窗口中找到'door open'动画,然后在Inspector中关闭'Loop Time'选项,这样门在打开后就会保持打开状态,而不会循环播放。

  • 如何让门在打开时同时激活区域内的敌人?

    -创建一个公共GameObject,命名为'area to spawn'。在门脚本中,在打开门之后,使用'areaToSpawn.SetActive(true)'来激活这个GameObject,从而激活区域内的敌人。

  • 如何为不同颜色的门设置不同的钥匙要求?

    -在门脚本中,为每种颜色的门设置一个公共布尔值(例如'requireRed', 'requireBlue', 'requireGreen'),并在脚本中检查玩家是否拥有相应的钥匙。如果玩家拥有正确的钥匙,门就会打开。

  • 如何创建钥匙拾取物并将其添加到玩家的库存中?

    -创建一个空GameObject作为钥匙拾取物的根,然后添加一个Quad作为图形,并设置其Collider为'Is Trigger'。添加一个'key pickup'脚本,并在脚本中设置相应的布尔值来表示不同类型的钥匙。当玩家触发拾取物时,将相应的布尔值设置为true,并销毁拾取物GameObject。

  • 如何将门和钥匙拾取物转换为预制件?

    -将门和钥匙拾取物居中后,拖入到Prefabs文件夹中创建预制件。创建预制件后,可以从场景中删除它们,以便在构建关卡时重复使用。

Outlines

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Mindmap

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Keywords

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Highlights

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Transcripts

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード
Rate This

5.0 / 5 (0 votes)

関連タグ
游戏开发Unity3D动画制作Doom克隆门系统钥匙系统敌人生成教程视频编程逻辑Unity建模
英語で要約が必要ですか?