if (Physics.Raycast(CAM, out floorHit, camRayLength, floorMask)) //从摄像机射出一道floorhit的光,长度为100,与floor接触 { Vector3 playerToMouse = floorHit.point - transform.position; Debug.Log(transform.position); Debug.Log(floorHit.point); playerToMouse.y = 0f; Quaternion newRotation = Quaternion.LookRotation(playerToMouse); playerRigibody.MoveRotation(newRotation); }
问题重述:上述代码中,从摄像机位置射出一个ray,击中floor,取得floor上的点。然后通过这个点的位置,做角色的转向(始终看向鼠标位置)功能,其中,Vector3 playerToMouse = floorHit.point - transform.position; 中 为什么要进行这个减法?
答:首先,Quaternion.LookRotation(playerToMouse);是看向一个向量,通常来说是一个从 坐标原点,设想4面八方的向量。但是如果不减去player现在的位置,那么当角色移动后,他看向的点依然是从原点射出的向量,这样会导致角色实际上并没有看向坐标真正的位置。
所以要通过这样的减法,确定主角的位置,则不会出错。当然主角一开始就在原点则不需要这么做了。
暂无关于此日志的评论。