阅读背景:

Unity3D摄像机跟随人物移动脚本

来源:互联网 

直接上代码,首先在场景里创建一个可以移动的人物,然后将该脚本挂载在摄像机上即可实现人物跟随功能。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class FollowPlayer : MonoBehaviour { private Transform player; private Vector3 offsetPosition; // 位置偏移 private bool isRotating = false; public float distance = 0; public float scrollSpeed = 10; public float rotateSpeed = 2; // Start is called before the first frame update void Start() { player = GameObject.FindGameObjectWithTag(Tags.player).transform; transform.LookAt(player.position); offsetPosition = transform.position - player.position; } // Update is called once per frame void Update() { transform.position = offsetPosition + player.position; RotateView(); ScrollView(); } void ScrollView() { distance = offsetPosition.magnitude; distance += Input.GetAxis("Mouse ScrollWheel") * scrollSpeed; distance = Mathf.Clamp(distance, 2, 18); offsetPosition = offsetPosition.normalized * distance; } void RotateView() { if (Input.GetMouseButtonDown(1)) { isRotating = true; } if (Input.GetMouseButtonUp(1)) { isRotating = false; } if (isRotating) { transform.RotateAround(player.position, player.up, rotateSpeed * Input.GetAxis("Mouse X")); Vector3 originalPos = transform.position; Quaternion originalRotation = transform.rotation; transform.RotateAround(player.position, transform.right, -rotateSpeed * Input.GetAxis("Mouse Y")); float x = transform.eulerAngles.x; // 当超出范围之后,将属性归位原来的,就是让旋转无效 if (x < 10 || x > 80) { transform.position = originalPos; transform.rotation = originalRotation; } } offsetPosition = transform.position - player.position; } } u



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: