前言
U3D作为主流引擎,网上的教程可以说是不计其数。但是程序是一种模式化的思维,引擎也有他的底层原理。网上很多网课只是一步一步地展示做法,看似实现了效果,但其实根本没有说清楚背后的原理。我们就算跟着做了一遍,也只是熟悉了引擎的基本操作,但是如果想要自己做点什么效果,便会问题百出。
比如说一开始我们打的第一行Unity代码一般都是控制玩家移动的。这时勤劳好学的我们一定会跟着老师一起打下这行代码。
void FixedUpdate() {
rb.MovePosition(transform.position + transform.forward * Time.deltaTime);
}
那么我想问一下为什么这里非要用rigbody的MovePosition函数?为什么不能给刚体一个向前的速度(rigid.velocity)?为什么不能给他一个力让他向前移动(rigid.AddForce())?
如果用transform.Translate()直接控制物体移动会出什么样的问题?
包括攻击的判定有用碰撞体进行检测的,也有扇形、圆形、矩形攻击判定方式,也可以用射线检测。那么这些都分别适用于什么情况?各自有什么优缺点?
取舍(trade-off)是游戏领域非常重要的思维。“If it’s looks like,it’s right!”游戏很多时候只要实现了效果即可,但是实现效果的方式非常之多,到底该怎么取舍是一种很重要的思维。
**网上大部分的网课与教程都是没有讲这些思维和原理的,只是很简单地教了一种做法。**至于涉及图形学和设计模式好的U3D教程更是寥寥无几。所以选择好的教程对于一个自学人来说非常重要。