Unity Learning for Day 5

1、课程介绍与Unity3D 环境搭建

Unity3D 是什么:一个软件;一个游戏开发引擎(工具) ; Unity3D Unity U3D

Unity3D 能做什么:游戏开发(手游);(页游);(VR AR 仿真)

优势:学习成本较低,开发效率高; 跨平台运行,一次开发,多平台发布(Windows、Andriod、IOS、Mac、Web)

为什么要学习:相对于其他编程,从业人数少,入门门槛高;(其他编程Web、IOS、Andriod)

所需基础:

  • 编程语言基础:C#(语法基础、面向对象)
  • 英语基础
  • 数学基础

软件下载安装:官网下载;注册机注册;账号登录

软件安装目录结构:

  • Editor——Unity3D软件(引擎 )核心文件
  • MonoDevelop 一款内置的脚本编辑软件

2、 游戏场景基本操作

这里写图片描述

项目文件夹结构:

  • Assets:资源文件夹,保存游戏中所有资源
  • Library:库文件夹,保存当前项目所需的库文件
  • ProjectSettings:项目设置文件夹,保存项目的设置信息
  • Temp:临时文件夹,保存项目的临时数据

3、游戏场景制作3D模型

Cube是长宽高都为1米的参照物

世界坐标系:理解为现实生活中的东南西北上下

  • X(红色):右边(东)
  • Y(绿色):上边
  • Z(蓝色):前边(南)

物体自身 坐标系

世界坐标观察模式

  • Persp:透视模式,近大远小。
  • ISO:正交模式,远近一样大。

4、3D模型美化之材质球

材质球:Material,材质:物体的质地,物体看起来是什么做的
贴图:Texture, 就是“普通的图片”,用于材质球的显示

shader:着色器;通过着色器来编辑材质球的效果。

会写Shader的人才是真正的高手

shift键 多选

5、3D模型重用之预制体

父子关系
空物体(Create Empty):类似电脑文件夹

预制体(Prefab):预先准备好的物体,可以重复使用和利用

  • 创建预制体
    直接将Hierarchy 面板中的游戏物体拖拽到Project 面板的Assets 中,即
    可创建一个预制体。
    预制体文件的后缀是“.prefab”。

  • 预制体与非预制体的区别
    ①非预制体的颜色是白色,预制体颜色是蓝色;
    ②在Inspector 面板,非预制体是图标颜色是“红绿蓝”三色的,预制体的图
    标是蓝色的。
    ③在Inspector 面板,预制体比非预制体多了一个“Prefab 选项”。

这里写图片描述

  • 预制体的好处
    编辑其中的一个,“Apply”一下,所有的全部改变。

6、基本组件之摄像机

场景美化,创建材质球、使用贴图资源、Tiling(使贴图分块显示)

摄像机(Camera)常用操作

  • 摄像机基本操作
    ①:在Hierarchy 面板上选中摄像机,Scene 视图会出现预览窗口。
    ②:根据轴向移动摄像机的位置,旋转摄像机的角度。
    ③:GameObject–>Align With View(Ctrl + Shift + F)对其视图。
    让摄像机对齐到当前视图,使Scene 与Game 中的观看角度和位置一致。
    ④:创建摄像机:Hierarchy 面板右键–>Camera。

  • 摄像机相关属性
    1.Clear Flags[清除标记]
    Skybox:天空盒
    Solid Color:固定颜色(纯色)
    2.Background[背景颜色]
    当Clear Flags 为Solid Color 时,场景的背景颜色。
    3.Projection[投影]
    Perspective:透视模式,3D 游戏使用。
    Orthographic:正交模式,2D 游戏使用。
    4.Clipping Planes[切割面]
    Near:近平面,摄像机最近能看到的东西。
    Far:远平 面,摄像机最远能看到的东西。

7、基本组件之灯光

灯光(light):用于照亮我们的游戏世界,使场景中产生阴影,增加真实感和立体感

隐藏与显示游戏物体:物体Inspector 面板上“图标”右侧的复选框。

  • 方向光(Directional Light):用于模拟太阳,模拟自然光;属性:Type(类型)、Color(颜色)、Intensity(强度)、Shadow Type(阴影类型
  • 点光源(Point Light):用于模拟电灯泡的照射效果
  • 聚光灯(Spot Light):用于模拟聚光灯照射效果

8、组件与脚本

Transform组件

  • 组件:Component,游戏物体的组成零件。Unity3D就是一款“组件式”游戏开发引擎,使用各种各样的组件拼装出我们游戏物体,最终拼接出一款完整的游戏。

  • Unity3D这款引擎提供了很多种类的组件,我们后期就需要学习这些组件的使用和特性,以及他们能实现的功能和效果。

  • Transform组件:变换组件。所有的游戏物体都具备的一个组件,也是最基础的一个组件,用于存储游戏物体的基本信息。Position(位置)、Rotation(旋转)、Scale(缩放)

C#脚本

  • 何为脚本:脚本(Script)——用于控制游戏的逻辑(C#语言)
  • 脚本代码简介:Start()方法,当游戏运行起来,就会马上执行,且只执行一次;Update()方法,循环调用,每帧调用一次,一秒钟大概执行60次。我们的游戏画面是在不停的刷新的,每刷新一次,就是一帧。

  • 输出调试:Debug.Log();

  • 这两个方法都是Unity3D内部的事件方法,不需要我们人工调用,系统会自动调用和管理这些“事件方法”

使用脚本

  • 直接将脚本拖拽到Hierarchy 面板上物体身上;
  • 直接将脚本游戏物体的Inspector 面板上;
  • 运行游戏,脚本就会执行。

Console 面板

  • Console:控制台。用于输出显示游戏运行过程中的调试信息。
    功能按钮:
  • Clear:清除功能,清除控制台中的信息;
  • Collapase:折叠功能,将相同的内容合并到一条显示,更新后面的数字;
  • Clear on Play:运行时清除之前的内容;

9、鼠标键盘输入

获取键盘输入

相关代码:

Input.GetKey();//按下某键后持续返回trueInput.GetKeyDown();//按下某键的一瞬间,返回true
Input.GetKeyUp();//抬起某键的一瞬间,返回true


//返回值:bool类型;参数:KeyCode枚举(Enum);KeyCode:键码,保存了物理键盘按键“索引码”

获取鼠标输入

1、相关代码

Input.GetMouseButton();  //按下某键后持续返回true
Input.GetMouseButtonDown(); //按下某键的一瞬间,返回true
Input.GetMouseButtonUp();// 抬起某键的一瞬间,返回true

返回值:bool类型
参数:鼠标按键索引值,0->左键、1->右键、2->中键

10、使用变换组件移动游戏物体

变换组件移动物体

相关方法:

gameObject.GetComponent( );获取相应组件的引用;查找当前游戏物体身上的某个组件,然后保存它的引用。

Transform.Translate(Vector3,Space):移动物体的位置
游戏物体往某个方向移动;以自身坐标系或世界坐标系

相关参数:

Vector3[struct]:三维向量。向量,可以表示一个方向,也可以表示一个位置

Space[enum]:空间,Space.Self:表示物体自身的坐标系;Space.World:表示物体所在的世界坐标系

11、物理组件之刚体

刚体组件简介

  • 刚体简介
    刚体:Rigidbody,属于物理类组件。
    作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意
    味着可以像现实中的物体一样运动。

  • 使用刚体移动物体

    • 相关方法
      Rigidbody.MovePosition(Vector3):使用刚体移动物体的位置。
      使用刚体移动物体,物体是根据世界坐标系的方向移动的。
      使用刚体移动物体,物体会触发物理相关的事件。

    • 参数
      MovePosition 中的Vector3 要使用“当前位置”+ 方向的方式。
      Transform.Position:属性当前物体的位置。

12、物理组件之碰撞体

碰撞体简介

  • 碰撞体
    使用刚体移动的物体,与场景中其他的物体相碰撞:
    其实是碰撞的目标物体的“碰撞体”组件,也就是Collider。
    另外和目标物体碰撞的,是我们移动的物体的自身的“碰撞体”组件。
    碰撞体可以理解为我们的模型的“外骨骼”。
    模型只要加了刚体,就必须要加碰撞体,否则没有意义。

  • Box Collider

  • Sphere Collider
  • Capsule Collider
  • Mesh Collider

这里写图片描述

13、刚体常用方法介绍

  • AddForce()

    • 作用
      给刚体添加一个力,让刚体按“世界坐标系”进行运动。
    • 代码
      Rigidbody.AddForce(Vector3,ForceMode);
      Vector3:力的方向和大小;
      ForceMode:力的模式[enum 类型]。

    • ForceMode 参数
      类型为枚举类型,以什么样的方式添加力给刚体。
      枚举值说明
      Acceleration:[.k.sel..re..n](加速度);
      Force:(力)这种模式通常用于设置真实的物理;
      Impulse:(冲击力)这种模式通常用于瞬间发生的力;
      VelocityChange:(速度的变化);

  • AddRelativeForce()

    • 作用
      给刚体添加一个力,让刚体按“自身坐标系”进行运动。
    • 代码
      Rigidbody.AddRelativeForce(Vector3,ForceMode);
      Vector3:力的方向和大小;
      ForceMode:力的模式[enum 类型]。
  • FixedUpdate()
    固定更新方法。
    所有和物理相关的操作,代码都要写在FixedUpdate()方法体内。
    固定更新的时间间隔是0.02 秒,1 秒执行50 次。
    Edit–>Project Settings–>Time 面板中的Fixed Timestep 参数设置。
    注意:Update()方法是每帧执行一次。
    画面每渲染完一次,就是一帧,每帧的时间是不固定的。
    在Update()方法中执行物理操作,会出现卡顿的情况。

14、刚体碰撞事件监测与处理

碰撞事件简介
- 何为碰撞事件?
当一个用刚体控制的物体与另外一个物体碰撞时,就会触发碰撞事件。
注:目标物体必须带有Collider 组件。
碰撞Collision
比如,一款射击类游戏,我们发射出了子弹,子弹是一个由刚体控制运动的物体,
子弹射中了敌人,我们如何监测到这个碰撞??

  • 碰撞事件监测方法
    • OnCollisionEnter(Collision)
      当碰撞开始时调用,只会调用该方法一次。
    • OnCollisionExit(Collision)
      当碰撞结束时调用,只会调用该方法一次。
    • OnCollisionStay(Collision)
      当碰撞进行中时,会持续调用该方法。
    • Collision 参数
      碰撞,一个类。作用:用于传递碰撞信息。
      Collision.gameObject 属性,与当前物体碰撞的物体的引用。
      gameObject.name 属性,当前物体的名字。

15、刚体触发事件监测与处理

1.触发事件简介
1.触发器
将碰撞体组件属性面板上的“Is Trigger”选项选中,当前的游戏物体的碰撞体
就变成了触发器。
移动的刚体物体会穿透碰撞体勾选了“Is Trigger”的物体。
2.触发事件
当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件。
触发用途:不与目标物体发生直接的碰撞(接触),而是只要进入目标物体的“触
发范围”就能执行某些特定操作。

2.触发事件监测方法
1.OnTriggerEnter(Collider)
当进入触发范围时开始时调用,只会调用该方法一次。
2.OnTriggerExit(Collider)
当离开触发范围时开始调用,只会调用该方法一次。
3.OnTriggerStay(Collider)
在触发范围内,会持续调用该方法。
4.Collider 参数
碰撞体,一个类。作用:用于传递触发信息。
Collider.gameObject 属性,进入触发范围内的目标物体的引用。
gameObject.name 属性,当前物体的名字。

16、网格组件之网格过滤器和渲染器

1.网格过滤器组件
1.简介
网格过滤器:Mesh Filter。
该组件只有一个“Mesh”属性,用于设置当前游戏物体使用哪个模型进行展示。
Mesh:网格,也就是模型。

2.网格渲染器组件
1.简介
网格渲染器:Mesh Renderer。
该组件用于“渲染”显示模型。如果没有该组件,模型就不会显示。
2.属性
Cast Shadows [投射阴影]
On:开启阴影显示
Off:关闭阴影显示

Receive Shadows [接收阴影]
选中就是接收
不选中就是不接收
Materials [材质球]
用于设置用哪个材质球渲染当前的模型(Mesh)。
我们拖拽到游戏物体身上的材质球,其实就是赋予给了这个组件的这个属性上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值