Unity3D实现鼠标控制视角转动
作者:JeterPong 发布时间:2023-11-22 21:18:46
标签:Unity3D,鼠标,视角转动
前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动。
代码如下:
C#脚本(在Unity 5.5.1 下能运行):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouseView : MonoBehaviour {
public enum RotationAxes
{
MouseXAndY = 0,
MouseX = 1,
MouseY = 2
}
public RotationAxes m_axes = RotationAxes.MouseXAndY;
public float m_sensitivityX = 10f;
public float m_sensitivityY = 10f;
// 水平方向的 镜头转向
public float m_minimumX = -360f;
public float m_maximumX = 360f;
// 垂直方向的 镜头转向 (这里给个限度 最大仰角为45°)
public float m_minimumY = -45f;
public float m_maximumY = 45f;
float m_rotationY = 0f;
// Use this for initialization
void Start () {
// 防止 刚体影响 镜头旋转
if (GetComponent<Rigidbody>()) {
GetComponent<Rigidbody> ().freezeRotation = true;
}
}
// Update is called once per frame
void Update () {
if (m_axes == RotationAxes.MouseXAndY) {
float m_rotationX = transform.localEulerAngles.y + Input.GetAxis ("Mouse X") * m_sensitivityX;
m_rotationY += Input.GetAxis ("Mouse Y") * m_sensitivityY;
m_rotationY = Mathf.Clamp (m_rotationY, m_minimumY, m_maximumY);
transform.localEulerAngles = new Vector3 (-m_rotationY, m_rotationX, 0);
} else if (m_axes == RotationAxes.MouseX) {
transform.Rotate (0, Input.GetAxis ("Mouse X") * m_sensitivityX, 0);
} else {
m_rotationY += Input.GetAxis ("Mouse Y") * m_sensitivityY;
m_rotationY = Mathf.Clamp (m_rotationY, m_minimumY, m_maximumY);
transform.localEulerAngles = new Vector3 (-m_rotationY, transform.localEulerAngles.y, 0);
}
}
}
调用时,只需把该脚本绑定给物体即可。这里是绑定摄像机,以摄像机为第一人称视角转动。
来源:https://blog.csdn.net/qq_33994566/article/details/79650913


猜你喜欢
- 前言:这个语句的作用是,确保该语句执行之后,关闭每一个资源,也就是说它确保了每个资源都在生命周期结束之后被关闭,因此,比如读写文
- Configuration configuration = ConfigurationManager.OpenExeConfiguratio
- 本文实例为大家分享了Unity3D实现批量下载图片功能的具体代码,供大家参考,具体内容如下下一篇文章试试用线程下载代码如下using Sys
- Java内部类一、 含义在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。二、
- 本文实例讲述了C#将布尔类型转换成字节数组的方法。分享给大家供大家参考。具体如下:byte[] b = null;b = BitConver
- APT(Annotation Processing Tool 的简称),可以在代码编译期解析注解,并且生成新的 Java 文件,减少手动的代
- 本文实例讲述了C#实现读取DataSet数据并显示在ListView控件中的方法。分享给大家供大家参考。具体如下:/*lvStudentLi
- 最近接触到INI配置文件的读写,虽然很久以前微软就推荐使用注册表来代替INI配置文件,现在在Visual Stud
- public final class Integer extends Number implements Comparable<Int
- 最近项目需求中有需要导出Execl表格的要求,而且还是大量的数据,于是把之前的整理了一下,抽成了一个统一的工具类,需要时直接调用工具类即可,
- JAVA多线程断点下载原理如图:代码如下:import java.io.BufferedReader; import java.io.Fil
- 1、将 Jmeter 下 extras 目录中 ant-jmeter-1.1.1.jar 包拷贝至 ant 安装目录下的lib目录中,否则会
- 这篇文章主要介绍了MyBatis Mapper接受参数的四种方式代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 本文实例为大家分享了Java判断对象是否为空的具体代码,供大家参考,具体内容如下package com.gj5u.publics.util;
- 在阅读这篇文章之前,大家可以先看下《Java多线程atomic包介绍及使用方法》,了解atomic包的相关内容。一、何谓Atomic?Ato
- 前言近期有个业务需求,涉及用户付费相关的计算,需要一个日历组件,组件功能如下:仅支持从明天开始选择预定日期仅支持可选范围内的日期日期的选择是
- 前言镜像配置都是常规操作,必要时也可以上代理.自己搭的nexus本质也是一种镜像,可以代理maven中央仓库.各个仓库的测速,可以使用这个脚
- 滑动删除的部分主要包含两个部分, 一个是内容区域(用于放置正常显示的view),另一个是操作区域(用于放置删除按钮)。默认情况下,操作区域是
- Android Studio是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA。它类似于Eclipse ADT,And
- 废话不多说了额,直接给大家贴代码了,具体代码如下所示:/** * 下载指定路径的文件,并写入到指定的位置 * &