【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

这篇具有很好参考价值的文章主要介绍了【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

描述

实现摄像机根据鼠标移动跟随物体旋转,以摄像机前物体为中心,摄像机围绕物体旋转,并使摄像机时刻指向物体

实现效果

unity鼠标控制相机旋转,圖形學,unity,游戏引擎

Unity 组件设置

Camera 组件设置

unity鼠标控制相机旋转,圖形學,unity,游戏引擎

Body 组件设置

unity鼠标控制相机旋转,圖形學,unity,游戏引擎

实现代码

CameraRotateMove.cs 摄像机跟随和旋转

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

public class CameraMoveRotate : MonoBehaviour
{
    public float LerpPar;
    public Transform FollowTrans;
    public Vector3 Offset;
    public Transform CameraTransform1;
    Vector3 ForwardDirec;

    // Start is called before the first frame update
    void Start()
    {
        Offset = transform.position - FollowTrans.position;
    }

    // Update is called once per frame
    void Update()
    {
        float dx = Input.GetAxis("Mouse X");

        Offset = Quaternion.AngleAxis(dx * 10, Vector3.up) * Offset;
        transform.position = Vector3.Lerp(transform.position, (FollowTrans.position + Offset), LerpPar * Time.deltaTime);
        transform.rotation = Quaternion.LookRotation(-1 * Offset);


    }
}

move_better.cs 物体根据按键移动文章来源地址https://www.toymoban.com/news/detail-717021.html

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

public class move_better : MonoBehaviour
{
    public float speed = 3.0f;
    private Rigidbody mRigidbody;
    public Transform FollowTrans;
    public Vector3 Offset;
    public Transform CameraTrans;
    float Offset_x, Offset_z;
    // Start is called before the first frame update
    void Start()
    {
        mRigidbody = GetComponent<Rigidbody>();
        Offset = FollowTrans.position - CameraTrans.position;

    }

    // Update is called once per frame
    void Update()
    {
        Offset = FollowTrans.position - CameraTrans.position;
        Vector3 direction_forward = new Vector3(0, 0, Offset_z);
        Vector3 direction_left = new Vector3(Offset_x, 0, 0);


        if (Input.GetKeyDown("w"))
        {
            mRigidbody.velocity = CameraTrans.forward * speed;
        }

        if (Input.GetKeyDown("s"))
        {
            mRigidbody.velocity = -1 * CameraTrans.forward * speed;
        }
        if (Input.GetKeyDown("a"))
        {
            mRigidbody.velocity = -1 * CameraTrans.right * speed;
        }
        if (Input.GetKeyDown("d"))
        {
            mRigidbody.velocity = CameraTrans.right * speed;
        }
        if (Input.GetKeyDown("space"))
        {
            mRigidbody.velocity = 2 * Vector3.up * speed;
        }
    }
}

到了这里,关于【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity 3D 人物移动朝向跟随摄像机(第一人称)

    Unity 3D 人物移动朝向跟随摄像机(第一人称)

    以人物身体旋转控制镜头左右滑动 以摄像机旋转控制镜头上下滑动 首先我们要知道 摄像机是作为人物的子物体的(充当眼睛) 所以当人物旋转时 摄像机会跟随它朝相同的方向旋转相同的角度 从而达到 眼睛(摄像机)注视的方向一定是人物的正前方 那么这样做有什么好处

    2024年02月21日
    浏览(13)
  • Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩

    Unity3D中运行场景时,实现摄像机的前、后、左、右、上、下,以及鼠标滚轮的放缩,鼠标右键的旋转操作。亲测有效,可供参考。 按键功能介绍:W——前;S——后;A——左;D——右;Q——下降;E——上升;鼠标右键——旋转;鼠标滚轮——放缩。 Tourcamera脚本需要挂在摄

    2024年02月11日
    浏览(10)
  • Unity摄像机跟随

    将摄像机直接拖拽到被跟随的目标下面即可,这样摄像机永远在目标的后面 缺点: 屏幕旋转太平滑了 目标物体在屏幕上的位置永远不变 目标物体被销毁时总不能把摄像机也销毁了吧 先相机坐标和物体坐标做差,求得偏移量,在之后的每一帧里,将偏移量加上物体的坐标。

    2024年02月21日
    浏览(10)
  • unity控制摄像机跟随玩家三种办法

    unity控制摄像机跟随玩家三种办法

    将相机拖到人物的游戏对象上,也就是让相机成为角色的子物体,这样相机就会跟随角色移动 但是这样会存在问题 1.相机会随着人物的翻转而翻转 2.相机跟随人物没有缓冲效果,移动比较僵硬 代码方式控制相机跟随人物移动,利用Lerp函数控制相机 1.在Unity中创建一个脚本F

    2024年02月16日
    浏览(20)
  • Unity使用Cinemachine插件实现摄像机跟随和震动

    Unity使用Cinemachine插件实现摄像机跟随和震动

     一、实现跟随 1、在PackageManager添加插件 2、创建Cinemachine的摄像机,我的项目是2D项目所以创建2D摄像机 3、将Player拖拽到Follow和LookAt  4、创建一个空物体,向它添加PolygonCollider2D,调整好可视范围的大小以后在CinemachineVirtuaCamera的Extensions的AddExtensionzhong中选择 把刚才创建的空

    2024年02月15日
    浏览(8)
  • Unity2D设置摄像机跟随和边界范围

    Unity2D设置摄像机跟随和边界范围

            在制作2D游戏时时常会遇到需要设置摄像机跟随玩家的情况,一般情况下有三种处理比较简单的处理方法,第一种也是简单粗暴的方法,把摄像机直接作为玩家的子物体就可以了,当然这样做的后果就是不利于后续扩展更多的功能,比如切换玩家控制的角色时,你

    2024年02月13日
    浏览(12)
  • Unity物体始终朝向摄像机方向

    在上面的代码中,首先定义了一个cameraTransform变量,用于存储摄像机的Transform组件。 使用 Camera.main 方法来获取场景中的主摄像机,然后获取其Transform组件并将其赋值给 cameraTransform 变量。 然后,在Update方法中,我们计算出摄像机位置和物体位置之间的向量差,并将其存储在

    2024年02月15日
    浏览(8)
  • unity-第三人称摄像机简单脚本(包括跟随、视角旋转、滚轮缩放)

    本菜鸟为了实现第三人称视角摄像机的主要功能,踩了很多意料之外的坑,终于搞出一份自觉完美的脚本,分享一下。 功能:摄像机跟随、鼠标滚轮缩放视野、长按鼠标右键左右旋转视野、长按鼠标中键上下旋转视野。 此脚本挂接在摄像机上,有详细注释,可直接运行。

    2024年02月08日
    浏览(188)
  • Unity实现摄像机向屏幕中间发射射线射击物体

    Unity实现摄像机向屏幕中间发射射线射击物体

    外部找个PNG透明图,拖到Unity文件夹,右上角改成精灵sprite2d 2.添加到UI画布   3.写脚本 首先,我们需要引入一些 \\\"工具\\\",就像我们在玩游戏时要先下载游戏客户端一样。这里的 \\\"工具\\\" 就是一些命名空间,让我们可以方便地使用 System 和 UnityEngine 类。 🔧 接下来,我们创建了

    2024年02月08日
    浏览(12)
  • unity摄像机平滑移动旋转

    Unity中使用Vector3.SmoothDamp(平滑阻尼)方法进行跟随移动,可以使跟随看起来很平滑,而不显得突兀,最典型的示例就是相机平滑跟随角色移动。 SmoothDamp (current : Vector3, target : Vector3, ref currentVelocity : Vector3, smoothTime )  

    2024年02月11日
    浏览(10)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包