Unity官方脚本(一)
来源:互联网 发布:linux连接工具 ssh 编辑:程序博客网 时间:2024/06/05 03:12
- 一 时间周期
- 二 空间向量
- 三 空间向量计算
- 四 时间差TimetimeDelta
- 五 GameObject游戏对象以及相关组件和函数方法
- 六 线性插值Lerp
一、 时间周期
- Awake()和Start()会在脚本加载后自动调用
- Awake()先被调用,即使脚本未被启用。此方法最好用来设置脚本之间的引用和初始化
- Start()在Awake()之后调用,第一次Update()调用之前,但必须是脚本已被启用的情况下。
- Update()每一帧都会被调用,大部分需要周期性改变的内容都放在这个函数里。非物理对象的移动、计时器、输入检测、通常都放在Update()中。Update()并不根据正常的时间轴调用,如果某一帧花费的时间大于下一帧,那么每帧调用的间隔将不同。
- FixedUpdate()根据正常的时间轴调用且每次调用间隔是相同的,调用FixedUpdate()后,会进行需要的物理计算。比如有刚体的物理对象,需要放在FixedUpdate()中。FixedUpdate()通常用于移动物理对象。
二、 空间向量
- 向量运算:向量是两点之间的一条线。
- 2D向量可以从原点(0,0)指向平面中任意一点
- 3D与2D
- Unity遵循左手坐标系法则。
三、 空间向量计算
- 3D计算两点之间的距离:Unity中Vector3.Magnitude()会自动计算向量大小
- 3D向量有两个常用函数,点积(通过两个向量计算出一个标量,是一个单一值)和叉积
- 点积:通过点积可以了解两个向量之间的关系。如果两个向量的点积为0,那么他们相互垂直。Unity中可以调用Vector3.Dot()自动计算点积
- 叉积的结果不是一个单一标量值,而是另一个向量,这个向量垂直于之前的两个向量
- 当你开发一个模拟飞行游戏时,或许会用到点积,你需要计算飞机的上向量与前向量的点积,如果两个向量相互垂直,也就是点积为0,那么飞机的阻力最小
如果点积增大为正值,表示飞机的爬升,可以增大阻力 - Unity中调用Vector3.Cross()自动计算叉积。叉积在游戏中可以用于判断扭矩,从而转动坦克炮台,首先获取炮台当前朝向向量,和炮台应朝向的向量,通过他们的叉积可以计算出炮台的扭矩
四、 时间差Time.timeDelta
- timeDelta表示两个值之间的差。Time类中的deltaTime属性表示Update()或fixedUpdate()每次调用的间隔,这可以让值平滑变化,可用于平滑移动或其他增量的计算。
2.代码:
public class UsingDeltaTime : MonoBehavior{ public float speed = 8f; public float countdown = 3.0f; void Update() { countdown -= Time.deltaTime; if(countdown <= 0.0f) light.enabled = true; if(Input.GetKey(KeyCode.RightArrow)) { //以每秒移动多少 transform.position += new Vector3(speed * Time.deltaTime,0.0f,0.0f); } }}
五、 GameObject游戏对象以及相关组件和函数方法
- 设置启动或关闭对象:
GameObject.SetActive(true/false);
- 检测对象自身和在“Hierarchy”中是否被启用:
GameObject.activeSelf;
GameObject.activeInHierarchy;
- Translate和Rotate是两个常用的改变对象位置和旋转的函数,使用的坐标是自身坐标
transform.Translate(new Vector3(0,0,1) * Time.deltaTime);//每秒单位沿着z轴移动
transform.Rotate(Vector3.forward * turnSpeed * Time.deltaTime);//每秒单位沿着z轴移动
- 如果你要移动带有碰撞器的对象,某些需要由物理交互的对象时,就不要使用Translate和Rotate,而是要使用专门移动物理对象的函数,除非你的刚体勾选了“Is Kinematic”选项。
- Destroy()可以销毁对象和组件:Destroy(gameOject);。Destroy()的第二个参数(可选):用于设置销毁的额延迟时间
Destroy(GetComponent<MeshRenderer>());//销毁渲染组件
- LookAt()可以让对象的正前方,朝向设定的坐标方向。
public Transform target;void Update(){ transform.LookAt(target);}
六、 线性插值Lerp
0 0
- Unity官方脚本(一)
- Unity官方_第一人称游戏<恶魔射手>----学习笔记一(英雄脚本)
- unity脚本学习(一)
- Unity脚本生命周期(一)
- Unity脚本编程(一)概述
- Unity学习(一):脚本概念理解
- unity脚本的一些笔记(一)
- Unity API(一)Unity中的脚本事件及其函数
- Unity API(一)Unity中的脚本事件及其函数
- unity官方demo学习之Stealth(一)
- Unity官方案例学习(星际航行游戏一)
- Unity官方实例教程 Roll-a-Ball(一)
- unity官方内置网络unet的实例教程(一)
- Unity脚本编程一:脚本,事件,组件
- Unity官方教程Roll-a-ball (一)
- 使用微软官方工具在VS中调试Unity脚本
- 【Unity 3D】学习笔记二十一:unity游戏脚本(一)
- Unity官方实例教程 Roll-a-Ball 学习笔记(一)+(二)
- .a文件如何打包到Android项目中
- spring data jpa 懒加载 处置
- Android studio遇到 java.lang.OutOfMemoryError: GC app:transformClassesWithDexForDebug解决方法 以及gradle优化
- Qt中int转换成QString
- [编程题]洗牌
- Unity官方脚本(一)
- 文章标题 POJ 2349:Arctic Network ( 最小生成树Kruskal算法+并查集)
- Android使用echarts
- 水手分椰子类型题简易通解公式及推导(完整版)
- Unique Paths II leetcode
- iOS8统一的系统提示控件——UIAlertController
- 华为 合唱队
- UVA 10125 Sumsets 折半枚举 + 二分
- retrofit学习