首先声明,博主使用的是Unity5.3.2(64)
游戏开发中,经常会遇到相机视野的拉近,拉远以及旋转,跟随的问题,这里我们只搞一种方式
直接上代码:
using UnityEngine;
using System.Collections;
public class FollowPlayer : MonoBehaviour {
public float scrollSpeed = 1;
public float distance;
public float rotateSpeed = 2;
private Transform player;
private Vector3 offsetPosition;
private bool isRotating = false;
void Start () {
player = GameObject.FindGameObjectWithTag ("Player").transform;
transform.LookAt (player.position);
offsetPosition = transform.position - player.position;
}
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.5f,15);
offsetPosition = offsetPosition.normalized * distance;
}
void RotateView(){
if (Input.GetMouseButtonDown (1)) {
isRotating = true;
}
if (Input.GetMouseButtonUp (1)) {
isRotating = false;
}
if (isRotating) {
Vector3 originalPos = transform.position;
Quaternion originalRotation = transform.rotation;
transform.RotateAround (player.position,player.up,rotateSpeed*Input.GetAxis ("Mouse X"));
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;
}
}