三维人物跟随鼠标移动

   //第一种写法 设置地板为Floor层
public float speed = 6f; private int floorMask;//layer层 void Awake() { floorMask = LayerMask.GetMask("Floor");
Turning();
}
//人物跟随鼠标移动 void Turning() { //返回一条射线 这条射线从摄像机通过一个屏幕点(鼠标位置) Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit floorHit; //存储返回来的信息 if (Physics.Raycast(camRay, out floorHit, 100f, floorMask)) { //point 在世界空间中,射线碰到碰撞器(地板)的碰撞点 //playerToMouse 可理解为是一个轴线 物体围着这个轴线旋转 Vector3 playerToMouse = floorHit.point - transform.position; Quaternion newRotation = Quaternion.LookRotation(playerToMouse); transform.rotation = newRotation; }
 1 //第二种方法 设置地板tag
 2    private Vector3 targetPosition = Vector3.zero;//设置目标初始位置为0
 3 
 4     void Update()
 5     {
 6         if (Input.GetMouseButton(0))
 7         {
 8             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 9             RaycastHit hitInfo;
10             if (Physics.Raycast(ray, out hitInfo))
11             {
12                 if (hitInfo.collider.tag == Tags.ground)
13                 {
14                     targetPosition = hitInfo.point;//先把鼠标位置赋值给目标
15                     targetPosition = new Vector3(targetPosition.x, transform.position.y, targetPosition.z);
16                     transform.LookAt(targetPosition);
17                 }
18             }
19         }
20 }

 



    }

 

 设置 地板为Floor层

 

posted on 2018-10-09 16:58  追求LPY  阅读(574)  评论(0编辑  收藏  举报