如在小地图中,希望可以动态画出Player当前的位置、z的朝向:用3条线、z轴正向、30°旋转、-30°旋转。
需求 | API | 向量(V) 点(P) | 备注 |
平滑位移 | Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta); | P | |
平滑位移 | Vector3 Slerp(Vector3 from, Vector3 to, float t) | P | |
新的坐标点 | this.m_transform.position = pos; | P | 符合常规思维 |
变动一次坐标 | m_transform.Translate(new Vector3(rx, 0, -m_Speed * Time.deltaTime)); | V | 可认为是增量 |
求方向 | Vector3 relativePos = this.m_transform.position – m_Player.position; | V | 向量减法,较难理解 |
设置新坐标点 | lineRenderer.SetPosition(0,this.gameObject.transform.position); m_NavAgent.SetDestination(this.m_Player.transform.position); | P | 符合常规思维 |
新的位置 | pointer.transform.position = hitInfo.point + (transform.position – hitInfo.point) * 0.01f; | P、V | 力的叠加? |
求距离 | float dis = Vector3.Distance(v1, v2); float f1 = (v1 – v2).sqrMagnitude; float f3 = (v1 – v2).magnitude; | P、V | Distance用点即可 向量减法也可以 |
缩放正向 | Vector3 v3 = this.m_transform.forward * 200f; | V | V的数乘 |
射线检测 | Ray r = new Ray(source, dest); Physics.Raycast(r, out hit, 1000, m_ShootMask) | V、P | Source Dest:V |
加一个力 | rigidbody.AddForce (0, 10, 0); | V |
组件 | 函数 | unity 圣典的API说明 | 是否 用过 |
transform组件 | translate函数 | 向某方向移动物体多少距离【默认local坐标系】 或者相对某物体移动 | yes |
Position属性 | 在世界空间坐标transform的位置 | Yes | |
RigidBody组件 [FixedUpdate函数] | Velocity属性 | 刚体的速度向量 Unity 官方demo Done用的很酷 | Yes |
AddForce函数 | 添加一个力到刚体。作为结果刚体将开始移动。 | yes | |
MovePosition函数 | 移动刚体到position | ||
NavMeshAgent组件 | SetDestination函数 | 设置自动Path目标点 | yes |
CharacterController 组件 | Move函数 | 一个更加复杂的运动函数,每次都绝对运动 | yes |
SimpleMove函数 | 以一定的速度移动角色 | ||
Vector3向量 | Lerp函数 | 两个向量之间的线性插值。 “像弹簧一个跟随目标物体” | |
Slerp函数 | 球形插值在两个向量之间 “在日出和日落之间动画弧线” | ||
MoveToward函数 | 当前的地点移向目标 和Vector3.Lerp相同,maxDistanceDelta限速 | ||
SmoothDamp 函数 | 随着时间的推移,逐渐改变一个向量朝向预期的目标。 |
Quaternion API | Unity 圣典的API说明 | 是否 用过 |
Quaternion.LookRotation | 创建一个旋转,沿着forward(z轴)并且头部沿着upwards(y轴)的约束注视。也就是建立一个旋转,使z轴朝向y轴朝向up。 常用的是transform.LookAt | yes |
Quaternion.Angle | 返回a和b两者之间的角度。 | |
Quaternion.Euler | 返回一个旋转角度,绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(像这样的顺序)。 | yes |
Quaternion.Slerp | 球形插值,通过t值from向to之间插值。 | |
Quaternion.FromToRotation | 从fromDirection到toDirection创建一个旋转。 | |
Quaternion.identity | 返回恒等式旋转(只读)。这个四元数对于“无旋转”:这个物体完全对齐于世界或父轴。 | yes |
Quaternion.operator * | 由另一个四元数来旋转一个旋转角度,或由一个旋转角度来旋转一个向量 | yes |
1 Quaternion.LookRotation和Vector3.RotateTowards的区别?
2 Quaternion.Angle和Vector3.Angle的区别?
3 Quaternion.LookRotation和transform.LookAt的区别?
[官方回答: 大多数时间你可以使用transform.LookAt代替
Quaternion.LookRotation]
4 如何实现2个GameObject face to face,即Z轴相对?
欢迎光临 纳金网 (http://go.narkii.com/club/) | Powered by Discuz! X2.5 |