学习就是认识新观念和新想法的过程。
假如人们始终以同一种思维方式来考虑问题的话,那么始终只会得到同样的结果。
因为我对你讲述的许多内容是你以前从未接触过的,所以我建议你,在你还没有做之前,不要轻易下结论。
没有想象力的人是很难成就大事的。
? ----送给正在学习的我们。
番茄我始终有一个梦,一个大家可能都有过的梦,那就是:做游戏。
内心中总会有一个声音,它告诉我,我应该做点什么。我想最好的开始时间就是现在,于是我出发了。
目前学习了一周的unity,总结一下自己的所学。
时常总结,才会感受到收获。
从原理上来看,其实任务角色的移动就是修改对应角色再坐标轴上的位置。
人物角色的移动,目前我学习到有两种方式。
rigid body
的元素,可以修改物体的 velocity
元素,给予物体一个力;当然这只是目前学习到的移动物体的方式,后续其他厂家在做学习。
怎么获取到角色移动的方向?
// 分别获取-垂直和水平。 返回值返回范围 -1~1
float translation = Input.GetAxis("Vertical");
float rotation = Input.GetAxis("Horizontal");
// 除此之外,还有函数 GetAxisRaw。
// GetAxis对比GetAxisRaw,拥有平滑过渡。
// input.GetAxis()的值是根据你 按键时间 以及 按键顺序 决定。例如当你一直按住 “A键” ,input.GetAxis()的返回值会随时间从 0 到 1 ,但是中途如果按下了 “D键”,那么就会保持按下 “D键”时的返回值。
可以选中角色,然后打开动画器,添加多个图片,按指定的时间频率切换,达到一种动态的效果。
同时一个角色可以有多个动画,可以添加多个动画,然后在 动画器
中,添加参数,增加判断条件,来切换角色的动画。
例如:原地站立,奔跑,跳跃,攻击。
static void Destroy(Object obj, float t = 0.0F);
// 使用 Destroy 销毁元素,传入元素对象即可,第二个参数可以定义延迟多久销毁元素。
// 销毁当前元素,可以使用 this ,例如: Destroy(this.gameObject);
生命周期的钩子比较多,说一下目前学习到的常见的。
场景第一次加载阶段
场景开始时被调用,场景中的每个对象调用一次
Awake 方法:始终在任何 Start 方法之前并在实例化预制体之后调用。(如果游戏对象在启动期间处于非活动状态,则在激活之后才会调用 Awake 。)
OnEnable 方法:(仅在对象处于激活状态时调用)在启用对象后立即调用此函数。当一个MonoBehaviour 实例被创建时(例如加载关卡或实例化具有脚本组件的游戏对象时)调用。
第一帧更新之前的阶段
Start 方法:启用脚本实例后,在第一帧更新之前调用 Start 方法。
注意:对于当前场景中所有的游戏对象而言,Start 方法会在所有脚本中的 Update 方法之前调用。在游戏运行过程中实例化对象时,不能强制执行此调用。
FixedUpdate 方法:调用 FixedUpdate 的次数比 Update 更多。帧率比较低时,该方法每帧会被调用多次;帧率比较高时,可能不会每帧都被调用。这也是因为 FixedUpdate 是基于可靠的计时器(独立于帧率,不受帧率影响)。因此,FixedUpdate 主要用来处理物理计算和更新的相关逻辑,例如处理刚体。在 FixedUpdate 内应用运动计算时,无需将值乘以 Time.deltaTime。
Update 方法:每帧调用一次 Update。按帧更新的主要方法。
LateUpdate 方法:每帧调用一次 LateUpdate(在 Update 执行完成后)。LateUpdate 的一个常见用途就是第三人称的摄像机跟随。如果你把角色的移动和选择放到 Update 中,那么就可以把所有摄像机的移动和旋转放在 LateUpdate 中计算执行。这是为了摄像机追踪角色位置之前,确保角色已经完成移动。
transform
转换
rigid body
刚体
animation
动画
attack
战斗
idle
闲置的,懒惰的
jump
跳
Vertical
垂直的
horizontal
水平的
axis
对称轴