Unity3D简单实现游戏对象跟随鼠标旋转
作者:Emma
时间:2024/3/12 14:05:05
阅读数:394 人阅读
[SerializeField] LayerMask whatIsGround;
void Update(){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.Log(ray);
RaycastHit hitInfo;
if(Physics.Raycast(ray, out hitInfo, 200, whatIsGround)){
Vector3 target = hitInfo.point;
target.y = transform.position.y;
transform.LookAt(target);
}
解释:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Camera.Main是获取第一个启用且被标记为”MainCamera”的相机。
ScreenPointToRay(Input.mousePosition);
通过MainCamera射出一道无限延伸的射线到Mouse的位置。
Ray类型包含一个Origin(圆点)和一个Direction(方向)两个三位坐标属性,Origin跟随鼠标的移动而改变,Direction始终是朝向MainCamera的方向。
RaycastHit hitInfo;
RaycastHit所包含的数据很多,这里主要用的其中的"Point"这一属性。
public static bool Raycast (Ray ray, out RaycastHit hitInfo, floatmaxDistance, int layerMask);
Raycast返回一个bool值,判断射线是否与指定的遮罩层(layerMask)碰撞器产生碰撞。
Transform.LookAt(target);
以上是《Unity3D简单实现游戏对象跟随鼠标旋转》的内容,希望对您有用。