How to make a DOOM CLONE in Unity || E1M3 Enemy AI and NavMesh Part 1

SpawnCampGames
7 Dec 202016:38

Summary

TLDR本视频脚本介绍了在Unity中为游戏敌人添加视觉效果和行为反应的步骤。首先创建了击中效果的粒子系统,并将其设置为不循环播放,持续时间为半秒。接着,为敌人添加了音频效果,并在玩家射击时触发。然后,通过改变敌人材质来表示其警觉状态,并使用触发器和脚本来检测玩家的接近。最后,设置了基本的AI行为,使敌人在意识到玩家后能够追逐玩家。这个过程包括了设置导航网格、调整敌人的NavMesh Agent组件,并编写脚本来控制敌人的移动。视频还提到了在开发过程中遇到的一些技术问题以及解决方法。

Takeaways

  • 🎮 在游戏中添加击中效果:创建新的粒子效果,设置持续时间为半秒,不循环,初始速度为10,颜色为深红色,使用重力1.5,模拟空间为世界空间,并通过触发器发射15个粒子。
  • 🛠️ 将击中效果转换为预制体:创建预制体文件夹,将击中效果拖入文件夹,然后从层级结构中删除击中效果实例。
  • 👾 敌人控制击中效果的生成:在敌人脚本中添加公共变量,用于生成击中效果,并在受到伤害时实例化该效果。
  • 🔊 为枪添加临时音效:创建音频文件夹,添加枪声效果,调整音量,并在枪脚本中播放和停止音效。
  • 🎨 敌人感知玩家时改变材质:创建新材质,添加触发器组件,当玩家进入触发器时,改变敌人的材质以显示其已经感知到玩家。
  • 🔍 通过触发器和标签检测玩家:使用`CompareTag`方法和玩家标签来检测玩家是否进入敌人的触发区域。
  • 🔧 玩家射击时使敌人感知:使用`OverlapSphere`方法检测射击范围内的敌人,并设置他们的感知状态。
  • 🏃 设置导航网格代理:为敌人添加导航网格代理组件,设置速度,并在导航窗口中烘焙导航网格。
  • 🤖 创建基础AI脚本:编写脚本使敌人在感知玩家后追逐玩家,使用`SetDestination`方法移动敌人至玩家位置。
  • 🛑 解决敌人检测问题:修复由于敌人之间距离过近导致的检测错误,通过距离检查而非触发器来检测玩家。
  • 🔄 持续迭代和改进:脚本和效果是临时的,将在后续进行重构和改进,以增强游戏的AI和测试体验。

Q & A

  • 如何在游戏中为敌人添加命中效果?

    -首先创建一个新的粒子效果,设置其持续时间为0.5秒,不循环播放。设置起始速度为10,起始颜色为深红色,并添加重力1.5。在发射器设置中,使用时间间隔为0的发射率,改为添加15个粒子的爆发。然后将这个粒子效果转为预制体,并放入预制体文件夹中。

  • 为什么需要在敌人脚本中添加枪击效果?

    -在敌人脚本中添加枪击效果是为了当敌人受到伤害时,能够在游戏中显示相应的视觉效果,增强玩家的游戏体验。

  • 如何在游戏中实现枪声效果?

    -首先创建一个新的音频文件夹并添加枪声效果文件。然后在玩家控制的角色上添加一个音频源组件,并设置音频剪辑为枪声效果。在枪的脚本中,使用GetComponent<AudioSource>()来获取音频源组件,并在射击方法中调用Play()函数播放枪声。

  • 为什么需要在敌人模型上添加敌意材料?

    -添加敌意材料是为了在敌人意识到玩家存在时,通过改变颜色来给玩家一个视觉提示,表明敌人已经进入警戒状态。

  • 如何使敌人在玩家进入触发器时改变材料?

    -在敌人脚本中使用OnTriggerEnter方法检测玩家是否进入触发器。如果是玩家,则获取敌人的MeshRenderer组件,并将其material属性设置为敌意材料。

  • 为什么需要为敌人添加一个NavMesh Agent组件?

    -NavMesh Agent组件负责在导航网格上导航,允许敌人根据玩家的位置移动,这是实现AI行为的基础。

  • 如何设置敌人的导航网格?

    -首先需要将地面和可行走的物体标记为Navigation Static,然后在Navigation窗口中进行烘焙,生成导航网格供敌人使用。

  • 如何编写敌人AI脚本来追逐玩家?

    -创建一个敌人AI脚本,在Start方法中初始化敌人意识和玩家位置的引用。在Update方法中,如果敌人意识到玩家,则使用NavMesh Agent的setDestination方法将目的地设置为玩家的位置。

  • 为什么需要修改敌人检测玩家的方法?

    -由于敌人之间的重叠和射线检测的问题,需要修改敌人检测玩家的方法以避免错误。可以通过距离检测和设置感知半径来实现。

  • 如何在游戏中测试敌人的AI行为?

    -在Unity编辑器中设置好所有脚本和组件后,可以通过播放测试来观察敌人是否能够根据玩家的位置和行为做出相应的反应,例如改变材料或追逐玩家。

  • 为什么在测试中会出现控制台错误?

    -控制台错误可能是因为射线检测时敌人的位置不正确导致的空引用错误。需要检查敌人的位置和射线检测的逻辑,确保敌人在正确的位置被检测到。

  • 如何修复敌人之间的重叠问题?

    -可以通过调整敌人的位置或大小,确保它们的碰撞体不会重叠。此外,也可以修改敌人检测玩家的逻辑,避免因为重叠而导致的错误。

Outlines

plate

此内容仅限付费用户访问。 请升级后访问。

立即升级

Mindmap

plate

此内容仅限付费用户访问。 请升级后访问。

立即升级

Keywords

plate

此内容仅限付费用户访问。 请升级后访问。

立即升级

Highlights

plate

此内容仅限付费用户访问。 请升级后访问。

立即升级

Transcripts

plate

此内容仅限付费用户访问。 请升级后访问。

立即升级
Rate This

5.0 / 5 (0 votes)

相关标签
游戏开发AI敌人视觉特效声音效果导航系统Unity3D敌人行为玩家交互脚本编程游戏测试