这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
不知不觉就到了青训营教学的最后一课了,时间过得真的好快啊,转眼就到了结营的时候,心里还是有很多不舍的,在青训营学习的这段时间我各方面的能力都提高了很多很多,眼界上也大大的扩宽了很多,很感谢这次青训营的经历。
这节课主要是讲了Unity的相关知识,大大的开阔了我的视野,Unity很久之前就听说过了,不过一直没有学习这方面的知识,这次也是跟着老师体验了一把Unity开发。
一,本节课重点内容
本节课主要围绕着Unity开发展开,内容上大致可以分为下面几个方面:
- 3D实体的搭建
- 相机,光照和天空盒
- 控制与碰撞
- 玩法逻辑与UI
二,详细知识介绍
3D游戏是由一个个的具有形状的实体构成,每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。 而3D实体的位姿态又可以分为两个三维向量坐标,分别是位置和旋转。
我们可以加载如fbx,gltf,obj等来创建3D模型。或者组合参数化的基本几何体。
3D实体的绘制上我们考虑如下方面:
- 材质
- 颜色
- 纹理
比如老师在课上介绍了我们可以调整一些参数使模型看起来更有锐度或是金属质感等等。
相机上我们要考虑看到的实际状况:
- Clear Flag
- 背景颜色
- Culling Mask
- 投影(透视,正交)
同样,光照方面也可以分为如下几点:
- 类型:点光源,平行光,聚光灯,面积光。
- 颜色
- 强度
- 阴影类型
短短的一帧中往往包括了很多事情,比如:初始化->物理->输入->游戏逻辑->渲染->停顿->销毁
三,实践的例子
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hero : MonoBehaviour
{
static public Hero S;
[Header("Set in Inspector")]
public float speed = 30;
public float rollMult = -45;
public float pitchMult = 30;
[Header("Set Dynamically")]
public float shieldLevel = 1;
void Start()
{
if(S == null) {
s = this;
} else {
Debug.LogError("");
}
}
void Update() {
float xAxis = Input.GetAxis("Horizontal");
float yAxis = Input.GetAxis("Vertical");
Vector3 pos = transform.position;
pos.x += xAxis * speed Time.deltaTime;
pos.y += yAxis * speed Time.deltaTime;
transform.position = pos;
transform.rotation = Quaternion.Euler(yAxis * pitchMult , xAis * pitchMult);
}
}
四,课后个人总结
这节课收获了很多,同时这也是青训营的最后一节课了,这段时间我各方面的能力都提高了很多很多,眼界上也大大的扩宽了很多,很感谢这次青训营的经历。