unity

您所在的位置:网站首页 unity手指点击物体摄像机聚焦 unity

unity

2023-09-09 07:18| 来源: 网络整理| 查看: 265

由于场景中的模型需要设置为static,所以模型不能移动和旋转,所以只能通过控制摄像机来实现。

/// /// 镜头的远离和接近 /// public void Ctrl_Cam_Zoom() { if (target) { float dis = Vector3.Distance(transform.position, target.position); if (dis > ZoomMax || dis < ZoomMin) return; float vertical = 0.0f; vertical += Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed; transform.position += Camera.main.transform.forward * vertical; } } /// /// 镜头的移动 /// public void Ctrl_Cam_Move() { if (Input.GetMouseButton(0)) { transform.Translate(Vector3.left * Input.GetAxis("Mouse X") * MoveSpeed); transform.Translate(Vector3.up * Input.GetAxis("Mouse Y") * -MoveSpeed); } } /// /// 摄像机的旋转 /// public void Cam_Ctrl_Rotation() { if (target) { var mouse_x = Input.GetAxis("Mouse X");//获取鼠标X轴移动 var mouse_y = -Input.GetAxis("Mouse Y");//获取鼠标Y轴移动 if (Input.GetKey(KeyCode.Mouse1)) { transform.RotateAround(target.position, Vector3.up, mouse_x * RotateSpeed); //float y = transform.eulerAngles.y + mouse_y * RotateSpeed; //Debug.Log(mouse_y * RotateSpeed); //if (y < 60) //{ // transform.RotateAround(target.position, transform.right, (mouse_y * RotateSpeed) + (60 - y)); //} //else if (y > 320) //旋转角度大于85则设置85 //{ // transform.RotateAround(target.position, transform.right, (mouse_y * RotateSpeed) - (y - 320)); //} //else //{ // transform.RotateAround(target.position, transform.right, mouse_y * RotateSpeed); //} transform.RotateAround(target.position, transform.right, mouse_y * RotateSpeed); } } }

代码中target是围绕物体的Transform,

个人感觉此代码还不完善,就是旋转的部分,没有进行角度的控制,可以随意的旋转,按照我的项目来说,我本想在上下旋转上进行限制,不让用户看到模型的底部,但是没有研究成功,领导也满意现在的成果,所以现在不在进行研究,以后代码有了改善再来修改



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3