Unity 通过鼠标控制模拟人物移动和旋转视角

要通过鼠标控制并模拟人物移动和转换视角,将会使用射线检测、鼠标点击和鼠标水平移动,配合物体旋转和移动方法共同实现。

首先搭建个由一个Plane地板和若干cube组成的简单场景:

其次创建一个Capsule作为移动物体,并把摄像头拉到该物体中。

创建以下脚本:

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

public class CameraController : MonoBehaviour
{
    private Vector3 targetPosition; // 目标位置
    private float moveSpeed = 5f; // 摄像头移动速度
    private bool isMoving = false;  // 标记物体是否正在移动

    public float rotateSpeed = 3f; // 摄像头旋转速度

    public void Update()
    {
        if (Input.GetMouseButton(0))
        {
            //视角旋转
            transform.Rotate(Vector3.up, Input.GetAxis("Mouse X") * rotateSpeed);
           
            //检测射线获取目标点
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);           

            RaycastHit hitInfo = new RaycastHit();
            if (Physics.Raycast(ray, out hitInfo))
            {                
                if (hitInfo.collider.name == "Ground")
                {                  
                    targetPosition = hitInfo.point;
                    targetPosition.y = transform.localPosition.y;
                    isMoving = true;
                }
                Debug.DrawLine(ray.origin, hitInfo.point, Color.blue);
            }

            //让物体移动到目标位置
            if (isMoving)
            {
                MoveObject();
            }
            
            
        }
    }

    private void MoveObject()
    {
        // 使用插值函数逐渐将物体移动到目标位置
        transform.position = Vector3.MoveTowards(transform.position, targetPosition, moveSpeed * Time.deltaTime);

        // 检查是否到达目标位置
        if (transform.position == targetPosition)
        {
            isMoving = false;
        }
    }   
}

 把脚本拉到移动物体中就可以了。

实际效果如下:

Unity鼠标模拟人物走动转换视觉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/242510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

thinkphp6入门(13)-- 一对多关联模型

定义一对一关联,例如,一个用户都有多个工作经历。 一、两表 1.用户表:user 2.工作经验表:work_experience user表的id关联work_experience表的user_id。 注意看,user_id1的有2条工作经验 二、数据模型 主表模型:…

多边形的裁剪:一种基于有效边表的有效多边形裁剪算法的分析

我们可以考虑有下面的多边形 黑色边框就是区域就是裁剪下来的多边形区域,我们可以将裁剪区域与多边形区域的端点看作有效边表,显然对于左边界来说我们是要选取边界x值大的点作为新的多边形的边界,对于右边界我们是要选择x值小的点作为多边形的…

通过fpmarkets与自媒体导师学习经验,避免踩坑

举一个例子,从fpmarkets与自媒体导师学习的负面经验,避免各位投资者踩坑。这个要从fpmarkets刚踏入外汇交易市场的第二年说起,偶然的一次,当fpmarkets看到一个可以不用花钱就可以学习交易培训课程时,就如同中了大奖一样…

Windows内存管理机制

文章目录 Windows内存管理机制Windows基本架构物理地址和虚拟地址内存空间布局物理内存和虚拟内存基本概念分页机制 总结从内存中获取数据的过程 Windows内存管理机制 Windows基本架构 在了解Window内存管理机制之前,先简单了解一下Windows的内核权限以及基本的架…

经典基本电路

USB电路 USB差分走线的阻抗为90欧:差分对10mil宽的走线以及5mil的间距,两边包地15/20mil以上厚度(SI9000计算阻抗) USB2.0接口电路: USB3.0接口电路: USB HUB电路: HDMI电路 HDMI差分走线的阻抗为100欧:差分对6mil宽的走线以及5mil的间距,两边包地15/20…

你都那么老了,还在每天写博客吗?

关注卢松松,会经常给你分享一些我的经验和观点。 白色便民网:我想多开一个公司会不会被税局查? 事件背景: 松松已创业9年,自媒体14年,经历过从0开公司、项目失败、赚钱等各种高光时刻。所以对于小微企业经营还是…

为什么QLC NAND才是ZNS SSD最大的赢家?-part3

在ZNS SSD设计中,也有很多的挑战: Open Zones 对写入缓冲区的需求:保持大量的 open zones(例如 1K)会增加对带宽的需求,并要求控制器提供足够的缓冲空间来管理并发写入请求。这需要较大的高带宽写入缓冲区以…

DENet:用于可见水印去除的Disentangled Embedding网络笔记

1 Title DENet: Disentangled Embedding Network for Visible Watermark Removal(Ruizhou Sun、Yukun Su、Qingyao Wu)[AAAI2023 Oral] 2 Conclusion This paper propose a novel contrastive learning mechanism to disentangle the high-level embedd…

ELK简单介绍一

任务背景 运维人员需要对系统和业务日志进行精准把控,便于分析系统和业务状态。日志分布在不同的服务器上,传统的使用传统的方法依次登录每台服务器查看日志,既繁琐又效率低下。所以我们需要集中化的日志管理工具将位于不同服务器上的日志收…

前端反向代理的神奇世界:加速、安全与缓存的秘密(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

3D Font

在游戏中使用3D文本 只需添加预制件并立即生成您的文本。 特点: *真实3D字母,可用作游戏对象*移动友好低聚 *VR兼容 *WebGL兼容 *30种以上不同字体 *材料和颜色可定制 WebGL演示 https://indiechest.itch.io/3d-font-engine 下载: ​​Unity资源商店链…

【lesson13】MySQL表的基本操作之create(创建),update(更新)和replace(替换)

文章目录 表的增删查改create测试建表基础测试 update测试建表基础测试 replace(替换)测试建表基础测试 表的增删查改 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) create 测试 建表…

opencl.dll如何修复?快速解决opencl.dll缺失总共有5种方案

在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是“opencl.dll缺失”。OpenCL(Open Computing Language)是一种开放的并行计算框架,用于编写高性能的并行程序。当opencl.dll文件丢失或损坏时,可…

Simple Water Caustic Pattern In Unity ShaderGpaph

shadertoy上有各种神奇的效果,以我的见识根本想象不到这些是怎么弄出来的。 不过不会做至少可以先会用。 这篇文章抓取一个shadertoy的示例以制作一个测试效果。 参考这篇shadertoy,使用自定义节点装填hlsl的noise代码 Shader - Shadertoy BETA 首先使…

生物芯片市场分析:预计2029年将达到180亿美元

生物芯片(biochip或bioarray)是根据生物分子间特异相互作用的原理,将生化分析过程集成于芯片表面,从而实现对DNA、RNA、多肽、蛋白质以及其他生物成分的高通量快速检测。狭义的生物芯片概念是指通过不同方法将生物分子(寡核苷酸、cDNA、genomic DNA、多肽…

Vue之Computed(计算属性)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

Linux的五种IO模型

众所周知,出于对 OS 安全性的考虑,用户进程是不能直接操作 I/O 设备的。必须通过系统调用请求操作系统内核来协助完成 I/O 动作。 下图展示了 Linux I/O 的过程。 操作系统内核收到用户进程发起的请求后,从 I/O 设备读取数据到 kernel buff…

复旦微用AXIDMA接收原始图像

参考SD卡移植博客&#xff0c;&#xff0c;移植SD卡相应代码 AXIDMA部分Demo下的bsp包整个pl搬到相应位置&#xff0c;添加相应文件 #include <stdio.h> #include <stdlib.h> #include "platform.h" #include "fmsh_common.h" #include "…

算法中的最优化方法课程复习

算法中的最优化方法课程复习 单模函数、拟凸函数、凸函数证明证明一个线性函数与一个凸函数的和也是凸的 梯度线性规划标准形式以及如何标准化标准形式常见标准化方法线性化技巧 单纯形法二次规划无约束优化Nelder-Mead线搜索FR共轭梯度法例题 优化算法的选择、停止准则算法选择…

echarts 没画出来图形,dom报错宽高未识别

当echarts 刷新时&#xff0c;画不出图形 控制台 报错 应当是你画布&#xff0c;父级使用了flex布局&#xff0c;找成了画布的宽高失效 解决方法&#xff1a;画布class上加上一句 flex-shrink: 0;