角色控制器 Character Controller

Unity中,1个单位尺寸代表1米。即在Unity中创建一个Cube的尺寸是1x1x1米大小。

Unity推荐把人的身高定为大约2个Unity单位高度(2米)。

为了截取角色的全身照,需要把角色Instantiate到指定位置,但是角色大小不一,可能相机原先设定的orthographicSize不足以看到角色的全身,

(一)根据角色的真实高度调整相机的orthographicSize

            CharacterController controller = obj.GetComponent<CharacterController>();
      float h = controller.height;
      float scaleY = obj.transform.localScale.y;

      float multiNum = h * scaleY;  //物体在世界中的真实高度
            showCamera.aspect = 1;
      showCamera.orthographicSize = multiNum / 2 + 0.06f; 

相机的orthographicSize为在正交模式下相机的一半尺寸。

controller.height×obj.transform.localScale.y 为角色物体在Unity中的真实高度。

(二)固定相机的orthographicSize,改变角色的大小

           CharacterController controller = obj.GetComponent<CharacterController>();
      float h = controller.height;
      float scaleY = obj.transform.localScale.y;
      float multiNum = 1.5f / h / scaleY;
      obj.transform.localScale = new Vector3(obj.transform.localScale.x * multiNum, obj.transform.localScale.y * multiNum, obj.transform.localScale.z * multiNum);

相机中可容纳角色的高度为1.5。

原文地址:https://www.cnblogs.com/martianzone/p/3287737.html