使用光线投射实现相机跟随

来源:互联网 发布:python web 开发 编辑:程序博客网 时间:2024/04/30 11:27
<pre name="code" class="csharp">using UnityEngine;using System.Collections;public class TestWalk : MonoBehaviour {Vector3 mousePos;Vector3 forwardOffset;Camera camera;public float speed = 0.1f;public float height = 2f;void Start(){camera = Camera.main;        mousePos = transform.position;forwardOffset = (-10) * camera.transform.forward;}void Update() {if (Input.GetMouseButtonDown(0)){RayControl();}if (Vector3.Distance(transform.position, mousePos) > 1){CharacterController controller = GetComponent<CharacterController>();Vector3 v = Vector3.ClampMagnitude(mousePos - transform.position, speed);controller.Move(v);}NormalMoveCamera(transform);}void RayControl(){// 向屏幕发射一条射线Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;if (Physics.Raycast(ray, out hit, 200)){// 获取碰撞点坐标mousePos = hit.point; transform.LookAt(new Vector3(hit.point.x, transform.position.y, hit.point.z));}}// 计算跟随坐标Vector3 CalcCameraPos(Vector3 pos){return forwardOffset + pos;}//摄像机跟随人物public void NormalMoveCamera(Transform goForm){camera.transform.position = CalcCameraPos(goForm.position) - camera.transform.forward * height;    camera.transform.LookAt(goForm);}}


                                             
0 0
原创粉丝点击