当前位置:网站首页>鼠标拖拽围绕某个物体旋转展示
鼠标拖拽围绕某个物体旋转展示
2022-06-25 22:19:00 【黑狗向前跑】
CameraController.cs
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour
{
float MouseX;
float MouseY;
//左右旋转速度
public float routateX;
//上下旋转速度
public float routateY;
//旋转速度
public float LerpRotateSpeed;
//目标点距离缩放
public float distanceScaleTargetValue;
//当前目标点距离缩放
public float distanceScaleCurrentValue;
//最小距离
public float minDistance;
//最大距离
public float maxDistance;
//限制最小旋转
public float minRotateYClampValue;
//限制旋转最大距离
public float maxRotateYClampValue;
//摄像机看向的位置
public Transform targetTrans;
//镜头缩放差值速度
public float lerpSpeed;
// Start is called before the first frame update
void Start()
{
MouseX = transform.eulerAngles.y;
MouseY = transform.eulerAngles.x;
distanceScaleCurrentValue = distanceScaleTargetValue;
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(0))
{
MouseX += Input.GetAxis("Mouse X")*routateX;
//因为摄像机 向下旋转x值增加 向上旋转x减小 所以减去
MouseY -= Input.GetAxis("Mouse Y")*routateY;
MouseY = Mathf.Clamp(MouseY, minRotateYClampValue, maxRotateYClampValue);
}else if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
distanceScaleTargetValue += Input.GetAxis("Mouse ScrollWheel");
distanceScaleTargetValue = Mathf.Clamp(distanceScaleTargetValue, 0, 1);
}
}
private void FixedUpdate()
{
//左右转 设置MouseY的值 上下转设置MouseX的值
Quaternion quaternion = Quaternion.Euler(MouseY,MouseX , 0);
transform.rotation = Quaternion.Lerp(transform.rotation,quaternion,Time.deltaTime*LerpRotateSpeed);
Vector3 targetPosition = transform.rotation * new Vector3(0, 0,-GetCurrentPos())+targetTrans.position;
transform.position = targetPosition;
}
/// <summary>
/// 获取当前位置
/// </summary>
/// <returns></returns>
private float GetCurrentPos()
{
distanceScaleCurrentValue = Mathf.Lerp(distanceScaleCurrentValue,distanceScaleTargetValue,Time.deltaTime*lerpSpeed);
return minDistance + (maxDistance - minDistance) * distanceScaleTargetValue;
}
}
设置数值参考

边栏推荐
- redux工作流程+小例子的完整代码
- 文献调研(一):基于集成学习和能耗模式分类的办公楼小时能耗预测
- Simulink求解器综合介绍
- Common problems encountered when creating and publishing packages using NPM
- 用js根据当前季度获取上一季度
- Multi-Instance Redo Apply
- Recherche documentaire (3): examen des modèles de prévision de la consommation d'énergie des bâtiments fondés sur les données
- dhcp复习
- 19c安装psu 19.12
- 10.2.3、Kylin_ The dimension is required for kylin
猜你喜欢
随机推荐
Ffmpeg version switching
Installing redis on Linux
SMT葡萄球现象解决办法
Oracle RAC cluster failed to start
On the use of bisection and double pointer
Redis jump table
DNS review
What is micro service
文献调研(二):基于短期能源预测的建筑节能性能定量评估
Tensorrt PB to UF problem
dhcp复习
删库跑路、“投毒”、改协议,开源有哪几大红线千万不能踩?
Several common rich text editors
DBCA silent installation and database building
EBS R12.2.0升级到R12.2.6
SSL unresponsive in postman test
DNS复习
dbca静默安装及建库
MongoDB的一些基础用法
14.1.1、Promethues监控,四种数据类型metrics,Pushgateway








