精华内容
下载资源
问答
  • //鼠标在x轴和y轴方向移动的速度 float x; float y; //鼠标在x和y轴方向移动的速度 float xSpeed = 250.0f; float ySpeed = 120.0f; void Start() { if (gameObject.GetComponent<Rigidbo

    //把下面的代码挂在摄像机中
    //摄像机跟随的主角物体
    public Transform target;
    //摄像机距离模型的默认距离
    public float distance = 20.0f;
    //鼠标在x轴和y轴方向移动的速度
    float x;
    float y;

    //鼠标在x和y轴方向移动的速度
    float xSpeed = 250.0f;
    float ySpeed = 120.0f;
    
    void Start()
    {
    	
    
    	if (gameObject.GetComponent<Rigidbody>() != null)
    	{
    		gameObject.GetComponent<Rigidbody>().freezeRotation = true;
    	}
    	
    
    }
    void LateUpdate()
    {
    	if (target)
    	{
    		//我的分析:1.根据垂直方向的增减量修改摄像机距离参照物的距离
    		distance += Input.GetAxis("Vertical");
    		//根据鼠标移动修改摄像机的角度
    		x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
    		y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
    		
    		Quaternion rotation = Quaternion.Euler(y, x, 0);
    		
    		Vector3 position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;
    		
    		//设置摄像机的位置与旋转
    		transform.rotation = rotation;
    		transform.position = position;
    	}
    }
    
    
    
    void Update()
    {
    
    }
    

    }

    展开全文
  • 主要为大家详细介绍了Unity3D使用鼠标旋转缩放平移视角,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动。代码如下:C#脚本(在Unity 5.5.1 下能运行):using System.Collections;using System.Collections.Generic;using UnityEngine;public class...

    前面,学了物体的移动功能,现在来学一下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()) {

    GetComponent ().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);

    }

    }

    }

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

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

    时间: 2019-02-24

    展开全文
  • 前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动。代码如下:C#脚本(在Unity 5.5.1 下能运行):using System.Collections; using System.Collections.Generic; using UnityEngine; public ...

    前面,学了物体的移动功能,现在来学一下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()) { GetComponent ().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); } } }

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

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

    展开全文
  • 实现:右键转动视角和镜头拉伸(拉动有范围) /// /// Mouse orbit. /// This script use to control a main camera /// using UnityEngine; using System.Collections; public class MouseOrbit : MonoBehaviour { ...

    镜头拉近拉远的代码(无限拉远拉近)

    代码如下:

    if( Input.GetAxis("Mouse ScrollWheel") != 0 )

    {

    this.gameObject.transform.Translate(new Vector3(0,0,Input.GetAxis("Mouse ScrollWheel")*Time.deltaTime*500));

    }

    上述代码放在Update ()函数中,其中gameObject是摄像机或者物体对象,500是可以调节的参数。方法非常简单。

    上述方法虽然能实现,但是太简单下面来个完整代码如下(只要把这个脚本绑定到相机上就OK);

    实现:右键转动视角和镜头拉伸(拉动有范围)

    ///

    /// Mouse orbit.

    /// This script use to control a main camera

    ///

    using UnityEngine;

    using System.Collections;

    public class MouseOrbit : MonoBehaviour {

    [HideInInspector]

    public GameObject target; //a target look at

    public float xSpeed; //speed pan x

    public float ySpeed; //speed pan y

    public float yMinLimit; //y min limit

    public float yMaxLimit; //y max limit

    public float scrollSpeed; //scroll speed

    public float zoomMin; //zoom min

    public float zoomMax; //zoom max

    //Private variable

    private float distance;

    private float distanceLerp;

    private Vector3 position;

    private bool isActivated;

    private float x;

    private float y;

    private bool setupCamera;

    // Use this for initialization

    void Start () {

    //Warning when not found target

    if(target == null)

    {

    target = GameObject.FindGameObjectWithTag("Player");

    if(target == null)

    {

    Debug.LogWarning("Don't found player tag please change player tag to Player");

    }

    }

    //Setup Pos

    Vector3 angles = transform.eulerAngles;

    x = angles.y;

    y = angles.x;

    CalDistance();

    }

    void LateUpdate () {

    ScrollMouse();

    RotateCamera();

    }

    //Roate camera method

    void RotateCamera()

    {

    if (Input.GetMouseButtonDown(1)){

    isActivated = true;

    }

    // if mouse button is let UP then stop rotating camera

    if (Input.GetMouseButtonUp(1))

    {

    isActivated = false;

    }

    if (target && isActivated) {

    y -= Input.GetAxis("Mouse Y") * ySpeed;

    x += Input.GetAxis("Mouse X") * xSpeed;

    y = ClampAngle(y, yMinLimit, yMaxLimit);

    Quaternion rotation = Quaternion.Euler(y, x, 0);

    Vector3 calPos = new Vector3(0, 0, -distanceLerp);

    position = rotation * calPos + target.transform.position;

    transform.rotation = rotation;

    transform.position = position;

    } else

    {

    Quaternion rotation = Quaternion.Euler(y, x, 0);

    Vector3 calPos = new Vector3(0, 0, -distanceLerp);

    position = rotation * calPos + target.transform.position;

    transform.rotation = rotation;

    transform.position = position;

    }

    }

    //Calculate Distance Method

    void CalDistance()

    {

    distance = zoomMax;

    distanceLerp = distance;

    Quaternion rotation = Quaternion.Euler(y, x, 0);

    Vector3 calPos = new Vector3(0, 0, -distanceLerp);

    position = rotation * calPos + target.transform.position;

    transform.rotation = rotation;

    transform.position = position;

    }

    //Scroll Mouse Method

    void ScrollMouse()

    {

    distanceLerp = Mathf.Lerp(distanceLerp,distance,Time.deltaTime * 5);

    if (Input.GetAxis("Mouse ScrollWheel") != 0 && !GUI_Menu.instance.CheckHoverItemShop() && !GUI_Menu.instance.CheckHoverSkillWindow())

    {

    // get the distance between camera and target

    distance = Vector3.Distance (transform.position , target.transform.position);

    distance = ScrollLimit(distance - Input.GetAxis("Mouse ScrollWheel")*scrollSpeed, zoomMin, zoomMax);

    }

    }

    //Scroll Limit Method

    float ScrollLimit(float dist, float min, float max)

    {

    if (dist < min)

    dist= min;

    if (dist > max)

    dist= max;

    return dist;

    }

    //Clamp Angle Method

    float ClampAngle(float angle,float min,float max)

    {

    if(angle < -360)

    angle += 360;

    if(angle > 360)

    angle -= 360;

    return Mathf.Clamp(angle,min,max);

    }

    }

    展开全文
  • Unity使用鼠标旋转缩放平移视角,供大家参考,具体内容如下用代码在Game界面完美实现Scene界面的操作方法。使用方法:把脚本挂在相机上,把跟踪的target拖到脚本上。视角跟踪的是一个空物体,当然如果你是做RPG游戏...
  • unity3D中经常需要通过鼠标操作视角的平移,旋转,缩放。这些操作都可以通过操作主摄像头来实现 二、实现 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; ...
  • //鼠标左键 if (Input.GetMouseButton(0)) { var position = transform.position; position += transform.TransformDirection(Vector3.left).normalized * (Input.GetAxis("Mouse X") * moveSpeed * 0.02f); ...
  • 前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动。代码如下:C#脚本(在Unity 5.5.1 下能运行):using System.Collections;using System.Collections.Generic;using UnityEngine;public class...
  • 本文采用的方法依然是在[Unity3D]Unity3D游戏开发之自由视角下的角色控制这篇文章中所采用的方法,所以如果大家对于这部分内容不太了解的话,最好先去看看这篇文章。好了,下面我们将以一个具体的实例来讲解今天的...
  • Unity3D】键盘鼠标控制视角的移动

    万次阅读 2017-05-02 16:38:03
    下面举一个简单的例子说明在Unity3D如何用键盘鼠标控制视角的移动的。如下图所示: 就像大部分游戏一样,可以用鼠标滚轮控制视角的远近,键盘的wasd和上下左右控制镜头的位置,而按着鼠标右键则可以控制镜头的旋转...
  • MainCamera添加First Person Controller组件后,鼠标只能控制镜头上下动,不能左右转动。稍微修改一下MouseLook实现上下左右都能动。代码如下:using System;using UnityEngine;using UnityStandardAssets....
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼小弟是美工,刚接触编脚本没几天,今天试着修改了一下unity3d 自带的视角控制脚本MouseLook.cs其中第45行是小弟添加的,实现了绕角色旋转的功能,但是碰到一个问题,就是...
  • 鼠标显示隐藏 角色位移旋转(视野限制)距离缩放 第三人称相机防遮挡(将遮挡物体透明化) 前期准备 创建地形(示例使用长宽为100的Terrain) 创建主角(示例使用Sphere) 在主角物体下创建两个相机分别命名为FPS和TPS表示...
  • 该脚本可以用于即时战略类游戏的视角,提供了缩进,拉伸,旋转。同时按住鼠标右键不放,移动鼠标可以实现第一人称视角的效果。 1 using UnityEngine; 2 using System.Collections; 3 4 public class ...
  • 摄像机的拉近视角代码:  public Transform target;  public float minFov = 15f;  public float maxFov = 70f;  public float sensitivity = 10f;  void Start()  {  transform.LookAt(tar
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼小弟是美工,刚接触编脚本没几天,今天试着修改了一下unity3d 自带的视角控制脚本MouseLook.cs其中第45行是小弟添加的,实现了绕角色旋转的功能,但是碰到一个问题,就是...
  • unity3d控制camera移动旋转

    万次阅读 2016-04-19 14:05:11
    第一次写博客,刚开始学习unity。把近期所学记录下来~  最近做的demo是控制一个摄像头在一个室内的场景中自由移动,类似于第一人称视角。  1.用鼠标和键盘控制 using UnityEngine;usingSystem.Collections; ...
  •  今天呢,我们继续来探讨Unity3D角色控制的内容,自由视角是指玩家可以按照自身坐标系向着四个不同的方向移动,当玩家按下鼠标右键时,可以绕Y轴按照一定的角度旋转摄像机,在旋转的过程中,角色将旋转相应的角度。...
  • 初识Unity3D

    2019-06-09 11:55:12
    鼠标右键:旋转视角 鼠标滚轮:按下拖动视角 = hand tool 向上翻滚视角向前靠近,物体在视野中变大 向下翻滚视角向后远离,物体在视野中缩小 ALT+左键拖动:旋转,效果与右键有差异 ALT+右键拖动:控制视角向前...
  • 我们来探讨Unity3D角色控制的内容,如图是我非常喜欢的《古剑奇谭》游戏截图,在这款游戏中就使用了今天要讲解的自由视角,所谓自由视角是指玩家可以按照自身坐标系向着四个不同的方向移动,当玩家按下鼠标右键时,...
  • Unity3d_镜头跟随鼠标移动

    千次阅读 2017-12-11 18:38:35
    需要将摄像头放在另个GameObject里 ...这样使得整个视角都处于正对面,而不会出现倾斜等现象using System.Collections; using System.Collections.Generic; using UnityEngine;public class CameraCon
  • Unity3d快捷键

    2020-06-03 11:22:50
    鼠标中键拖动场景 鼠标滚轮缩放场景 选择物体,F键居中 ALT+鼠标左键:围绕选中物体旋转 ALT+鼠标右键:缩放选中的物体 Ctrl+1 切换到scene视图 ... unity3d场景视图切换:单击坐标轴  ...
  • unity3D古风武侠游戏源码 unity3D古风武侠游戏源码(45度视角),一款东方武侠风格游戏demo,3D场景与人物,45度固定视角,360度全方位旋转鼠标点击移动,c#脚本,中国古典风格游戏源码比较少,这个比较珍贵的。

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
热门标签
关键字:

unity3d鼠标旋转视角