Unity:鼠标【上下左右滑动时】控制相机【左右张望】和【上下抬头】

这篇具有很好参考价值的文章主要介绍了Unity:鼠标【上下左右滑动时】控制相机【左右张望】和【上下抬头】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相机旋转,看着是小事,但是却关系到用户的直观体验。旋转对了母慈子孝,旋转错了则翻江倒海。

一、功能

鼠标左右移动时,控制相机左右转动
鼠标上下移动时,控制相机抬头低头

二、被GPT带翻的过程

你可以在GPT里提问,他的回答也很给力,能转,但是都不符合人体的看东西的特点。

后来还是的自己写…
本案的相机旋转的关键要点有两个:

  • 1、鼠标左右滑动的时候,相机要围绕这 世界的Y轴 旋转,旋转的中心在相机的原点。
//左右旋转:绕自己的原点旋转,旋转轴为世界的Y轴
this.transform.RotateAround(this.transform.position, axisX,mouseX);//  public Vector3 axisY = new Vector3(1,0,0);

类比:
我虽然是低着头(相机往下看),但是当我东张西望的时候,往东和往西是围绕我站立的Y轴,也就是世界的Y轴,来旋转转的。其他任何旋转方法,都会导致奇怪的效果,不符合人的观察特点。

下图的坐标轴为世界坐标轴。

Unity:鼠标【上下左右滑动时】控制相机【左右张望】和【上下抬头】

- 2、鼠标上下滑动的时候,相机实现抬头和低头的动作,此时相机是绕自己的x轴进行旋转。
类比:把自己的头想象成一个摄像机,抬头和低头时,我们绕的轴是穿过太阳穴的一条线。
//抬头低头:绕自己的轴旋转
transform.Rotate(axisY,mouseY, Space.Self);// public Vector3 axisY = new Vector3(1,0,0);

Unity:鼠标【上下左右滑动时】控制相机【左右张望】和【上下抬头】文章来源地址https://www.toymoban.com/news/detail-495533.html

三、代码

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

/// <summary>
/// 鼠标左右移动时,控制相机左右转动
/// 鼠标上下移动时,控制相机抬头低头
/// 该脚本挂载到相机Camera上
/// Todo:加入平滑插值或者动画效果
/// </summary>
public class CameraController2 : MonoBehaviour
{
    /// <summary>
    /// 鼠标灵敏度
    /// </summary>
    [Header("鼠标灵敏度")]
    public float sensitivity = 100f; // 鼠标灵敏度

    /// <summary>
    /// 相机抬头低头的旋转轴
    /// </summary>
    [Header("相机抬头低头的旋转轴")]
    public Vector3 axisY = new Vector3(1,0,0);
    
    /// <summary>
    /// 鼠标X位移映射的旋转轴
    /// </summary>
    [Header("鼠标X位移映射的旋转轴")]
    public Vector3 axisX = new Vector3(0, 1, 0);
    
    [Header("0-左键,1-右键,2-中建")]
    [SerializeField]
    public int buttonIndex = 1;   
    
    void Update()
    {
        //鼠标按下
        if (Input.GetMouseButton(buttonIndex))
        {
            // 获取鼠标的位置变化delta值
            float mouseX = Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime;
            float mouseY = Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;

            //左右旋转:绕自己的点旋转,旋转轴为世界的Y轴
            this.transform.RotateAround(this.transform.position, axisX,mouseX);

            //抬头低头:绕自己的轴旋转
            transform.Rotate(axisY,mouseY, Space.Self);
        }
    }
}

到了这里,关于Unity:鼠标【上下左右滑动时】控制相机【左右张望】和【上下抬头】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决微信小程序在IOS端会上下左右滑动的问题

    在开发微信小程序的时候发现在IOS端会出现上下左右都能滑动的情况,但是安卓端就不会出现这种情况,百度了一下好像IOS就是默认可以滑动,安卓默认不允许,本篇就这个问题解决一下,毕竟可以随意滑动视觉上不太美观 在外层的view设置overflow隐藏就好了,重新编译测试就

    2024年02月12日
    浏览(165)
  • 微信小程序在ios端上下左右滑动以及底部滚动条的解决方案

    最近在写小程序,碰到一个非常棘手的问题,就是安卓没事,苹果手机上的页面能上下左右的滑动,不美观这里我理解为不兼容,本着有问题就去解决,苹果默认应该是滑动的,下面是解决方法 底部滚动条解决

    2024年02月04日
    浏览(136)
  • 微信小程序、uniapp使用touchstart和touchmove左右滑动删除。以及解决上下抖动问题。

    展示效果图直接上代码 如果要修改里面内容直接从content这个类修改就行。 直接复制粘贴就行。拿上直接用。 如果遇到滑动会导致上下抖动用这个解决。给最外层得一个view标签加一个样式。 这样的话滑动会有阴影,但不会抖动,可以尝试一下看看,如果哪位能人能解决,就

    2024年02月11日
    浏览(135)
  • [Unity] Tilemap瓦片左右翻转(上下翻转)

    Tile(瓦片)左右翻转感觉是很常用的一个功能啊!看了一些教程都没有提及,心想难道要把每张Sprite再做一张对称的、再做成瓦片吗? 图片量x2 、瓦片量x2、不现实!一定有方法! 搜索了了半天没找到方法,结果自己偶然在奇怪的地方不一小心找到了~~ 记录一下! 菜单栏

    2024年01月22日
    浏览(43)
  • 13.Unity2D 横版 可上下左右移动的双向平台(双向行走+可移动+单独判定)+随机平台生成

        总目录 https://blog.csdn.net/qq_54263076/category_11900070.html?spm=1001.2014.3001.5482 大多数平台教程全是碰撞体的可移动平台,并没有可跳上的平台,并且要求按下键会从平台上跳下来。有也只是通过控制平台的“2D平台效果碰撞体”组件的单向平台的旋转偏移来做,但是这样会 出现一

    2024年02月04日
    浏览(50)
  • 用css来实现上下左右箭头

       

    2024年02月12日
    浏览(67)
  • Flutter:自定义组件的上下左右弹出层

    最近要使用Flutter实现一个下拉菜单,需求就是,在当前组件下点击,其下方弹出一个菜单选项,如下图所示: 实现起来,貌似没什么障碍,在Flutter中本身就提供了弹出层PopupMenuButton组件和showMenu方法,于是开搞,代码如下: 直接使用showMenu也行,代码如下: PopupMenuButton运行

    2024年02月10日
    浏览(70)
  • [Python中矩阵上下左右翻转(np.flip)]

    [Python中矩阵上下左右翻转(np.flip)] 现代编程语言和相关库的发展,使得数值计算和数据处理变得更加便捷和高效。在Python中,NumPy库是众多数据科学和工程应用领域的重要支撑之一。其中,np.flip函数可以用于进行矩阵的上下左右翻转操作,是我们在处理图像、信号、物理模

    2024年02月12日
    浏览(46)
  • vxe表格实现键盘上下左右方向键移动聚焦

    vxe 表格分为 vxe-table 一般表格和 vxe-grid 高级表格,两者之间的区别我就不说啦,我们来实现这两种表格用键盘按动上下左右方向键达到移动聚焦的效果。话不多说,上正文!!! 首先在标签放入这两个事件: 主要是利用vxe表格内置的@cell-click事件,来监听点击单元格的行号

    2024年02月07日
    浏览(79)
  • 键盘按键事件 通过键盘上下左右按键移动界面上图标

    #main.c文件 #include “keyevent.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); KeyEvent w; w.show(); } #include “keyevent.h”//头文件 #ifndef KEYEVENT_H #define KEYEVENT_H #include #include #include class KeyEvent : public QWidget { Q_OBJECT public: KeyEvent(QWidget *parent = 0); ~KeyEvent(); void drawPix(); void keyPre

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包