您的位置:首页 > 移动开发 > Unity3D

unity 实现相机围绕物体旋转、拉进、跟随(通过构建camera目录结构实现)

2018-09-04 17:51 489 查看

unity 实现相机围绕物体旋转、拉进、跟随

通过构建camera目录结构实现

这里写代码片
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraRotate : MonoBehaviour
{
[SerializeField]
private Transform cameraTransform;
[SerializeField]
private Transform targetTransform;
[SerializeField]
private Transform lookAtTransform;
[SerializeField]
private Transform rotateY;
float y;
[SerializeField]
private Transform rotateX;
float x;
[SerializeField]
private Transform zoomZ;
float z;

//设置默认数值
private float mouseX;
private float mouseY = 20.0f;
private float mouseScrollWheel = -5.0f;

private float t;
void Start()
{
RotateX(mouseY);
ZoomZ(mouseScrollWheel);
}

void Update()
{
ControlCamera();
}
private void LateUpdate()
{
FollowTarget(cameraTransform, targetTransform);
LookAtTarget(cameraTransform, targetTransform);
}
private void LookAtTarget(Transform transformCamera, Transform transformTarget)
{
transformCamera.LookAt(transformTarget);
}
private void FollowTarget(Transform transformCamera, Transform transformTarget)
{
transformCamera.position = transformTarget.position;
}

private void ControlCamera()
{
if (Input.GetMouseButton(0))
{
mouseX += Input.GetAxis("Mouse X");
Debug.Log(mouseX);
RotateY(mouseX);
mouseY += Input.GetAxis("Mouse Y");
RotateX(mouseY);
}
mouseScrollWheel += Input.GetAxis("Mouse ScrollWheel");
//限制相机的位置范围,别钻进去
mouseScrollWheel = Mathf.Clamp(mouseScrollWheel,-10.0f,-1.0f);
ZoomZ(mouseScrollWheel);
}
private void RotateY(float ry)
{
rotateY.localRotation = Quaternion.Euler(new Vector3(0, ry, 0));
}
private void RotateX(float rx)
{
rotateX.localRotation = Quaternion.Euler(new Vector3(rx, 0, 0));
}
private void ZoomZ(float rz)
{
zoomZ.localPosition = new Vector3(0, 0, rz);
}
}
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: