1.有时场景中需要让固定物体或Canvas生成在角色正前方(VR中比较常用)
代码很简单:
Vector3 targetPos = rig.transform.forward * 2f + rig.transform.position;
wui.transform.position = targetPos;
wui.transform.LookAt(rig.transform);
还可以加上角度:
public Vector3 GetPosition(Quaternion rotation, Vector3 position, float distance)
{
Vector3 direction = rotation * Vector3.forward;
return position + (direction * distance);
}
如果是对象是Canvas(world Space模式),注意画布的正反,可以通过修改scale改变画布的翻转:如,gui.transform.localScale=Vector3(-1,1,1)
2.比如我想获取某个点在我正前方的角度值(需要同一层级的节点,不同层级需要先转换坐标)
public class Example : MonoBehaviour
{
public float angleBetween = 0.0f;
public Transform target;
void Update()
{
Vector3 targetDir = target.position - transform.position;
angleBetween = Vector3.Angle(transform.forward, targetDir);
}
}
Vector3相减获得方向向量,然后和transform.forward取角度。
3.注意这两个常用forward的区别