unity 敌人自动攻击和寻路_Unity暑期萌新入门:环境篇

fa459b9de902139e8f6c08b75efbbdd2.png

大家好,新一期又跟大家见面了。

上一节我们完成了角色的移动控制,然而John只能在空白的场景中移动。因此接下来这一节我们将添加关卡、调节光照,让John来到阴森的鬼屋。然后设置NavMesh(导航网格,现在先听个概念就好),为以后添加会巡逻的幽灵作准备。

69cb24e44c69b0ead4c431921641f3b3.gif
是不是越来越像那么回事了?

一、添加关卡

1 创建关卡实例

在Project窗口中打开Assets> Prefabs文件夹,找到Level 的预制体,把它拖到Hierarchy窗口中。

81bbf68a81f321c0f75b3241964c5ea9.gif

2 把JohnLemon移动到关卡中

(1) 在Hierarchy窗口中,选中JohnLemon GameObject。

(2) 在Inspector窗口中,修改transform组件里Position属性(-9.8,0,-3.2)

bf230e9c3436101644d43b51b90482cd.png

二、调节光照

光照是烘托气氛的重要元素,接下来我们调节光照,使鬼屋关卡看起来更加幽暗。

1 Directional Light(方向光)可以模拟像太阳这类远处的光源。

cf3182aac6b3e4890559377fa221b453.png
图片来源:https://learn.unity.com/tutorial/the-environment?projectId=5caf65ddedbc2a08d53c7acb#5caf7befedbc2a0ded5950d4

设置Directional Light

d39a6f1a8a4fd125cdbf25a02079270c.png

在Hierarchy窗口中,选中Directional Light:

(1) 在Inspector窗口中,Light组件里的Type下拉菜单栏选择Directional

(2) 点击Color属性,弹出Color picker窗口。

各个参数含义以及设置:

下拉菜单:RGB 0-255

R(红):225

G(绿):240

B(蓝):250

A(透明度):255

ea8e086100c2a33af1501fe8cab12e91.png

设置完之后关闭窗口,诡异的蓝光就做好啦~

(3) 回到Light组件,Intensity(强度)设置为2。通过设置阴影的参数,使气氛更加毛骨悚然~

(4) Realtime Shadows -> Resolution(分辨率)下拉菜单选择Very High Resolution。

(5) Realtime Shadows -> BiasNormal Bias 属性参数设置为0.1。

(6) 把Transform组件的Rotation属性设置为(30, 20, 0),旋转灯光使光线从窗户射进屋里。

a68ace3a41eb9f253e1909859489d7f1.png
调整前

2d05f4cbc38c00bdb4691a416757a5a3.png
调整后

2 全局光照

Unity中有两种光来模拟现实世界中的光照,直接光照模拟来自特定光源的光(例如上一部分设置的阳光),间接光照模拟反射光。

61e5a80a9dab66c2cd0ce12918503dfa.png
左:没有光照 中:只有直接光照 右:全局光照(直接+间接)

图片来源:https://learn.unity.com/tutorial/the-environment?projectId=5caf65ddedbc2a08d53c7acb#5caf7befedbc2a0ded5950d6

这种逼真的效果通常需要经过一段长时间的烘焙,所以我们这里采用设置近似值的方法来进行快速模拟:

(1)打开Lighting窗口

点击顶部菜单栏的Window > Rendering >Lighting Settings,点击Lighting弹窗的标签并拖动到Inspector

7169952bde93909c9fc07a1fdc2c8f0c.png

bd325b0fc6de3c35f294a22424b15e63.png

(2) 设置参数

①在Environment下,点击Skybox Material 属性右侧的小圆,弹窗里选择None。(因为这个游戏不需要显示天空)

②Environment Lighting设置:

  • Source:改为Gradient(渐变)。
  • Sky Color:控制场景里方光源,RGB设置为(170, 180, 200 )
  • Equator Color:控制场景里间的光,RGB设置为(90, 110, 130)
  • Ground Color:控制场景里方的光,RGB设置为(0, 0, 0)

61797ff71abedd6aac2bf114a1fcc691.png

(3)取消勾选Realtime Global Illumination(实时全局光照)和Baked Global Illumination(烘焙全局光照)

0d7ca144b52ac682d8396dff6a0bde49.png

设置完毕后CTRL+S保存场景。

三、 设置NavMesh(导航网格)

NavMesh是一种自动寻路的技术,我们可以用它使幽灵在场景中游走。

1 标记Static

(1) 在Hierarchy中,选中Level GameObject。

(2) 在Inspector中,勾选Static(静态),使其纳入导航范围。

8a341d903b8d1f527b75992ce94dda45.png

ce21760ce674ec9918a6ff05b30324a3.png

(3) 弹窗选择Yes,change children,把子对象也一同标记为Static

(4) 禁用(取消勾选)天花板的Static,因为这个游戏里的幽灵不能在天花板上游走。

在Hierarchy中,Level> Corridors> Dressing> Ceiling Plane 并选择Ceiling Pane GameObject,取消勾选Inspector窗口中的Static。

68e19c593964266e60dd98c4d0aeaddd.png

设置完毕CTRL+S保存场景。

2 创建NavMesh

(1) 添加Navigation窗口

在顶部菜单栏中,选择Window > AI > Navigation,窗口会出现在Inspector窗口旁。

fb505c81b2dc9f998f84aa595e8ac4ce.png

(1)设置Bake(烘焙)参数

①选中Bake选项

Agent Radius(半径)调至0.25,适配以后添加幽灵角色的半径。

③ 设置完后点击Bake按钮。

d75ce89c0615057a4799b4e3b75412b2.png

烘焙完成后,蓝色区域代表可以行走的区域,选中Navigation窗口才会显示哦。

e27b0b2675b3b8d6a89de43161d7b109.png

结语:这一节我们添加了关卡,然后设置了环境的光照烘托诡异的气氛,创建NavMesh(导航网格)为添加会移动的幽灵作准备。赶紧CTRL+P运行游戏,让John承包一次鬼屋吧~由于此时我们还没有设置摄像机跟随,所以运行时要把Game视窗拖动到一旁,在Scene视图中观察John的移动(运行后点击Game视窗然后WASD操作)。下一节我们将学习Camera篇,设置摄像头跟随以及屏幕后效(可让画面效果表现得更棒)。

迫不及待想自行开始制作的小伙伴,可以浏览John Lemon's Haunted Jaunt官方教程:

https://learn.unity.com/project/john-lemon-s-haunted-jaunt-3d-beginner

咱们的游戏开发交流群也欢迎强势插入:869551769

希望参与线下游戏开发学习的,欢~~~~~~迎访问:http://www.levelpp.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element 表格宽度自适应_Java 设置Word中的表格自适应的3种方式

概述在Word创建表格时,可设置表格“自动调整”,有3种情况,通过Java程序设置可调用相应的方法来实现,即:根据内容调整表格AutoFitBehaviorType.Auto_Fit_To_Contents根据窗口调整表格AutoFitBehaviorType.Auto_Fit_To_W…

源码里没有configure_深入源码理解.NET Core中Startup的注册及运行

开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点。通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可以减少.NET应用程序对单一服务器的依赖性,使我们…

oracle查询慢怎么优化,Oracle查询优化-怎样建立索引优化下面的查询语句啊

下面是转换出来的查询语句SELECT *FROM (SELECT "Project1"."C1" AS "C1","Project1"."ID" AS "ID","Project1"."NVC_ORDERBY" AS "NVC_ORDERBY","Project1"."I_ST…

复试情报准备

英语自我介绍,介绍完老师会根据你的回答用英语问你问题,比如介绍一下你的本科学校,或者家乡什么的。计网过一遍,会问两道题。接下来是重点,我当时是根据我成绩单,问了我本科学过的科目,比如pyth…

oracle创建索引01652,建立数据表快照导致ora-01652异常

建立数据表快照导致ora-01652错误由于源表过大,数据查询速度较慢,在做后台的相关查询的时候较慢,于是决定创建数据快照,提高查询速度,快照创建语句如下:CREATE SNAPSHOT sn_ydmobilebankREFRESH COMPLETE S…

用python批量下载网络图片_python 批量下载网页里的图片

import requests import sys,re #设置提取图片url 的正则表达式 imgre re.compile(r" #存放找到的 图片url的列表 all_img_urls [] #图片下载后存放位置 save_path r‘/root‘ #获取指定网页中的图片url def get_img_url(tmpurl,tmpre,allimgurl,timeout10): headers …

alter table add column多个字段_利用Python将多个excel合并到一个文件中

数据岗位的小伙伴可能经常会遇到这样一个问题:多个来源返回的数据怎么整合到一个文件中?手动经常会出错,下面介绍一种利用Python处理的方式:前期准备:1、多个excel需要进行数据整理,保证文件的结构一致&…

结构体中vector自动为0_面试题:你是如何选择顺序存储数据结构的?

作者:Tarun Telang 来源:https://dzone.com/articles/arraylist-or-linkedlist本文为Java开发人员选择适当的顺序数据结构提供指导。ArrayList 和 LinkedList 是 Java 集合框架中用来存储对象引用列表的两个类。ArrayList 和 LinkedList 都实现 List 接口…

数字填图问题matlab上机实验报告,数学建模实验报告数字填图问题

数字填图问题一、实验目的及意义本实验旨在通过生活中几个常见的数字填图问题的探究,探究这类问题的逻辑推理解法和计算机解法.二、实验内容1. 数字填图的逻辑推理;2. 数字填图的计算机解法。三、实验步骤1.开启软件平台——MA TLAB&#xff…

c++ 函数指针_进化论——从函数指针到被结构封装的函数指针及参数的应用举例...

↑↑↑ 点击上方公众号名称关注,不放过任何转变的机会。✎ 编 者 悟 语借口再小也会瓦解人的意志。文 章 导 读今天带大家用下函数指针,然后将函数指针和函数参数封装到结构体中,接着将数据用动态分配和静态分配的方式赋值给相应的函数&#…

python怎么做软件界面_python – 如何自定义桌面应用程序的标题栏和窗口

我如何自定义标题栏(包括:关闭,最大化,最小化按钮,标题)和用PyQt编写的桌面应用程序框架,使其看起来像下面的图像?我需要一种方法来指定我想用于标题栏元素的颜色(按钮,文本标题和条形和按钮的背景颜色).我需要更改其窗口的代码: import sys …

python绘制社会关系网络图_Python networkx 网络图绘制

简单演示import networkx as nx import matplotlib.pyplot as plt # 定义空图 g nx.Graph() # 增加节点 g.add_node(1) g.add_node(A) g.add_nodes_from([2, 3]) g.add_edge(2, 3) g.add_edges_from([(1, 2), (1, 3)]) nx.draw(g, with_labelsTrue) plt.show() 一次增加多个点…

查看LINUX放开端口,linux如何查看端口是否开放?

在linux中我们可以通过在命令行中使用lsof命令、netstat命令来检查端口是否开放。方法一:使用lsof命令我们可以使用lsof命令来检查某一端口是否开放,基本语法如下:lsof -i:端口号如果没有任何输出则说明没有开启该端口号下图以80端口和53端口…

python数据处理框架_python 最快 web 框架 Sanci 快速入门

简介 Sanic 是一个和类Flask 的基于Python3.5的web框架,它编写的代码速度特别快。 除了像Flask 以外,Sanic 还支持以异步请求的方式处理请求。这意味着你可以使用新的 async/await 语法,编写非阻塞的快速的代码。 关于 asyncio 包的介绍&…

linux tcp ip c,Linux下TCP/IP编程--TCP实战(select)

本文参考自徐晓鑫《后台开发》,记录之。一、为什么要使用非阻塞I/O之select初学socket的人可能不爱用select写程序,而习惯诸如connect、accept、recv/recvfrom这样的阻塞程序。当让服务器同时为多个客户端提供一问一答服务时,很多程序员采用多…

单片机8×8点阵显示简单汉字的程序_干货 | 浅析单片机制作贪吃蛇游戏

为了让大家更深入地了解底层的原理,在讲解时特意选择了51单片机(而非STM系列),另外16*16点阵由译码器和移位缓存器直接驱动(而非MAX系列芯片),摇杆也利用ADC功能判断方向。那如何让单片机驱动这256个点呢?直接用IO口驱动显然不够且…

怎样在linux中创建硬盘,在linux中添加新硬盘并创建LVM组

1、以虚拟机为例,给虚拟机添加一块新硬盘,并创建LVM组,将新硬盘用于存放oracle数据库文件。2、fdisk -ll查看新添加的硬盘是否被识别,如图已经识别出sdb。3、# pvcreate /dev/sdb (创建PV,相当于win中将基础磁盘转换…

双代号网络图基础算法_软考网络工程师之系统开发和运行基础(软件分类、测试、模型)...

系统开发和运行基础(软件的分类、软件生存周期、软件开发模型、软件测试、软件项目管理)软件的分类系统软件,如操作系统。支撑软件,如开发工具。应用软件,如office。实时处理软件,一般是工业软件。软件生存周期1、软件定义问题定义…

在学Python前学Linux,Python原来这么好学-1.2节: 在Linux中安装python

这里将告诉您Python原来这么好学-1.2节: 在Linux中安装python,具体操作过程:在Linux系统的主要发行版中,按其软件包格式来进行划分,可分为Deb系以及RPM系操作系统。Linux系统与Windows系统有一个很重要的区别,Linux系统完全免费,开…

python金融大数据分析视频_Python金融大数据分析 PDF 全书超清版

给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python金融、大数据分析方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小47.8 MB,希尔皮斯科编写,目前豆瓣、亚马逊、当当、京东等电子书…