unity windowEditor平台下鼠标左键控制摄像机的视角

工作的原因,今天就只写了unity下的鼠标左键控制摄像机的视角左右上下调节;明天,补齐。[有诸多参考,着实是需要多多加油的]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class CameraMove : MonoBehaviour
{

    public Vector3 target;

    private Vector3 offset;
    private bool IsControlMove = true;

    private float _xAngles = 0.0f;
    private float _yAngles = 0.0f;

    private float m_xAngles = 0.0f;
    private float m_yAngles = 0.0f;

    private float m_xSpeed = 100f;
    private float m_ySpeed = 100f;

    //Limit
    private float m_xMinValue = -15f;
    private float m_xMaxValue = 15;
    private float m_yMinValue = -15;
    private float m_yMaxValue = 15;

    void Awake()
    {
        //Init
        Vector3 myCameraAngles = transform.eulerAngles;
        _xAngles = myCameraAngles.y;
        _yAngles = myCameraAngles.x;
        m_xAngles = myCameraAngles.y;
        m_yAngles = myCameraAngles.x;
        offset = transform.position - target;
    }
    void LateUpdate()
    {
        if (IsControlMove)
        {           

            if (Application.platform == RuntimePlatform.WindowsEditor)
            {
                //Debug.LogError(111111111);
                if (Input.GetMouseButton(0)/*&&!EventSystem.current.IsPointerOverGameObject()*/)
                {
                    m_xAngles -= Input.GetAxis("Mouse X") * m_xSpeed * 0.02f;
                    m_xAngles = Mathf.Clamp(m_xAngles, m_xMinValue, m_xMaxValue);
                    m_yAngles += Input.GetAxis("Mouse Y") * m_ySpeed * 0.02f;
                    m_yAngles = Mathf.Clamp(m_yAngles, m_yMinValue, m_yMaxValue);
                    var rotation = Quaternion.Euler(m_yAngles, m_xAngles, 0);
                    Vector3 position = rotation * offset + target;
                    transform.rotation = rotation;
                    transform.position = position;
                }
            }
            else if (Application.platform == RuntimePlatform.Android ||
                     Application.platform == RuntimePlatform.IPhonePlayer)
            {

            }

        }
    }

}

  

原文地址:https://www.cnblogs.com/allyh/p/8993174.html

时间: 2024-10-07 06:01:48

unity windowEditor平台下鼠标左键控制摄像机的视角的相关文章

unity中鼠标左键控制摄像机视角上下左右移动

enum RotationAxes { MouseXAndY, MouseX, MouseY } RotationAxes axes = RotationAxes.MouseXAndY; //@HideInInspector float sensitivityX = 15; //@HideInInspector float sensitivityY = 15; //private float minimumX = -360; 原文有此行但并未使用此变量 //private float maxim

js 鼠标左键拖动滚动

鼠标左键拖动滚动 原作者: http://blog.csdn.net/lisatisfy/article/details/6606026 本文在源代码的基础上 增加支持水平滚动 的功能 html <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html

JavaScript经典代码【二】【javascript判断用户点了鼠标左键还是右键】

IE 下 onMouseDown 事件有个 events.button 可以返回一个数值,根据数值判断取得用户按了那个鼠标键 events.button==0 默认.没有按任何按钮. events.button==1 鼠标左键 events.button==2 鼠标右键 events.button==3 鼠标左右键同时按下 events.button==4 鼠标中键 events.button==5 鼠标左键和中键同时按下 events.button==6 鼠标右键和中键同时按下 events.

禁用WPF中DataGrid默认的鼠标左键拖动多选行的效果

最近项目上有需求要做DataGrid的行的拖拽功能, 有个很现实的问题就是鼠标左键按下是拖拽还是多选. 查看了DataGrid的源码发现,系统内部会在鼠标按下的时候CaptureMouse,然后设置私有变量来保存多选标志, 在鼠标MouseMove的时候根据变量判断是否多选. private bool _isDraggingSelection;                                  // Whether a drag select is being performed

【转】 js怎么区分出点击的是鼠标左键还是右键?

IE 下 onMouseDown 事件有个 events.button 可以返回一个数值,根据数值判断取得用户按了那个鼠标键 events.button==0  默认.没有按任何按钮. events.button==1  鼠标左键 events.button==2  鼠标右键 events.button==3  鼠标左右键同时按下 events.button==4  鼠标中键 events.button==5  鼠标左键和中键同时按下 events.button==6  鼠标右键和中键同时按下

C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框

最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大概介绍一下原因,GDI画矩形框就不说了,很简单的.这里面最主要的就是滚轮放大和左键移动两个事件,要计算矩形框的坐标位置.下面将代码贴出如下: 先是定义需要的变量,就四个变量. //矩形框坐标        private Rectangle DrawRect = new Rectangle(0, 0

用鼠标左键绘制折线,利用鼠标中键或右键终止绘制

用鼠标左键绘制折线,同时在鼠标左键点中的位置输出一个含有该位置信息的字符串,利用鼠标中键或右键终止绘制. 解:建立一个Untitled.m文件 MATLAB指令: clf;axis([0,10,0,5]);hold on x=[];y=[]; for i=1:100 [x1,y1,button]=ginput(1); chstr=['(',num2str(x1),',',num2str(y1),')'];text(x1,y1,chstr); x=[x,x1];y=[y,y1];line(x,y)

解决鼠标左键单击冲突的问题(防止冒泡)

本人在一个页面实现了两种右键菜单,当鼠标左键单击空白处时,右键菜单并不隐藏.于是,Google之,最后找到一种方法,将鼠标左键单击事件改为: $(document).click( function () { } 改为 $(document).on('click touchstart', function () { } 问题解决.解决鼠标左键单击冲突的问题(防止冒泡),布布扣,bubuko.com

MFC中如何在TreeCtrl控件中获取鼠标左键消息时的有效点击位置

MFC中,当在TreeCtrl控件中添加鼠标左键消息时,就意味着,凡是在该控件中点击左键后即会响应鼠标左键的消息,可有时我们只想记下有效的鼠标左键点击的事件,如图所示: 只想在CheckBox中点击鼠标左键时,将已选中的Item的句柄存入到链表中,那么如何只将有效的鼠标左键的消息存入链表中呢? 下面是响应鼠标左键消息时从所有鼠标左键消息都响应到只响应有效的左键消息的三个版本: 当响应鼠标左键的消息时,第一个版本: 获取鼠标的点击位置(注意:此时获取的是针对于当前屏幕的鼠标点击位置,所以需要将其转