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);
  }
 }
}

调用时,只需把该脚本绑定给物体即可。这里是绑定摄像机,以摄像机为第一人称视角转动。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • unity实现鼠标拖住3D物体

    本文实例为大家分享了unity实现鼠标拖住3D物体的具体代码,供大家参考,具体内容如下 把该脚本直接挂在要拖拽的物体上即可 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ModelDrages : MonoBehaviour { //发射射线的摄像机 private Camera cam; //射线碰撞的物体 private GameObject go; //

  • 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

  • Unity3D实现鼠标控制旋转转盘

    在培训模拟考试软件中,我们经常会遇到类似用鼠标旋转转盘打开开关的需求.让用户更加真实的操作设备仪器.接下来说下我的解决方案. 因为鼠标操作是在UI平面上,所以我们要先将被操作的模型的世界坐标转换到屏幕坐标上.代码如下: ModelScreenPos = camera.WorldToScreenPoint(Model.transform.position); 这里有个声明,这个模型代表的是转盘,而且要保证模型的中心点在转盘中心.然后我们就要计算鼠标以模型在屏幕坐标为中心点的旋转偏移量.我们开始以鼠

  • Unity3D使用鼠标旋转缩放平移视角

    Unity使用鼠标旋转缩放平移视角,供大家参考,具体内容如下 用代码在Game界面完美实现Scene界面的操作方法. 使用方法:把脚本挂在相机上,把跟踪的target拖到脚本上. 视角跟踪的是一个空物体,当然如果你是做RPG游戏需要跟踪某一角色的视角,那就不需要中键平移功能,把空物体换成角色就行. 代码主要是分三部分功能进行实现. 1.右键拖动控制视角的旋转: 2.滚轮旋转控制视角的缩放: 3.中键拖动控制视角的平移. 右键拖动控制旋转主要是用GetAxis获得鼠标在x方向与y方向平移的距离,相

  • 超级经典一套鼠标控制左右滚动图片带自动翻滚

    超级经典一套鼠标控制左右滚动图片带自动翻滚 周宪环 周桢炜 张颖 王乃超 谢雯琇 吕铬 贾正如 = GetObj('List1').scrollWidth){GetObj('ISL_Cont').scrollLeft = GetObj('ISL_Cont').scrollLeft - GetObj('List1').scrollWidth;} GetObj('ISL_Cont').scrollLeft += Space ; } function CompScr(){ var num; if(Co

  • Unity3D实现旋钮控制灯光效果

    本文实例为大家分享了Unity3D实现旋钮控制灯光效果的具体代码,供大家参考,具体内容如下 前言 实际上使用的是非常简单的方式,通过开启以及关闭带有灯光效果物体的渲染以模拟出的灯光切换效果. 正确方式应当为物体切换不同的Material实现效果. 所用函数 public void RotateAround(Vector3 point, Vector3 axis, float angle); //通过给定一个世界坐标.轴向以及一个角度,使物体以该角度旋转绕世界坐标点的轴向的变换 public T

  • C++实现鼠标控制的黑框象棋

    本文实例为大家分享了C++实现鼠标控制的黑框象棋的具体代码,供大家参考,具体内容如下 该象棋小游戏的特色 有颜色标注出 红方和绿方 可以用鼠标控制 颜色原理 直接调用用Windows自带的颜色API 用到了 颜色头文件.h 代码. //consolecolor.hpp这是着色的实现头文件 #pragma once #include<Windows.h>//调用win32API函数 #include<iostream>//调用flush成员函数,首先刷新缓冲区 namespace c

  • JavaScript实现鼠标控制自由移动的窗口

    本文实例为大家分享了JavaScript实现鼠标控制自由窗口的具体代码,供大家参考,具体内容如下 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用鼠标移动的窗口</title> <style> .mainDiv { width: 350px; height: 200px; borde

  • Unity3D使用陀螺仪控制节点旋转

    本文实例为大家分享了Unity3D陀螺仪控制节点旋转的具体代码,供大家参考,具体内容如下 /******************************************************************** Desc: 陀螺仪对相机的逻辑类. *********************************************************************/ using System; using System.Collections; using

  • 可拖动窗口,附带鼠标控制渐变透明,开启关闭功能

    <style type="text/css"><!--#Layer1 { position:absolute; width:210px; height:160px; z-index:1; left: 178px; top: 322px; background-color: #FFFBF0;}#content { position:absolute; width:200px; height:115px; z-index:1; left: 0px; top: 27px; 

  • ImageFlow可鼠标控制图片滚动

    You are free to use this in any product, or on any web site. For more information about ImageFlow read the Documentation and check my Newsblog. For anything else simply drop me a line in my Shoutbox. ChangeLog Version 0.8  Added Safari 1.x compatibil

随机推荐