Unity小功能实现:鼠标点击移动物体

news2025/3/4 4:47:14
1、功能描述

    当玩家点击鼠标时,场景中的物体会移动到鼠标点击的位置。这个功能可以用于控制角色移动、放置物体等场景。

2、实现步骤

    创建Unity项目:首先,打开Unity并创建一个新的3D项目。

    添加3D物体:在场景中创建一个3D物体,比如一个球体(Sphere)。

    创建脚本:在Assets文件夹中创建一个新的C#脚本,命名为ClickToMove。

    编写代码:打开ClickToMove脚本,编写以下代码:

using UnityEngine;

public class ClickToMove : MonoBehaviour
{
    // 移动速度,可以在Inspector面板中调整
    public float moveSpeed = 10f;

    // 目标位置
    private Vector3 targetPosition;

    // 是否正在移动
    private bool isMoving = false;

    void Update()
    {
        // 检测鼠标左键点击
        if (Input.GetMouseButtonDown(0))
        {
            // 获取鼠标点击的位置
            SetTargetPosition();
        }

        // 如果正在移动,向目标位置移动
        if (isMoving)
        {
            Move();
        }
    }

    void SetTargetPosition()
    {
        // 从鼠标点击的位置发射一条射线
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        // 如果射线击中某个物体
        if (Physics.Raycast(ray, out hit))
        {
            // 设置目标位置为击中点的位置
            targetPosition = hit.point;
            isMoving = true;
        }
    }

    void Move()
    {
        // 计算移动方向
        Vector3 direction = targetPosition - transform.position;

        // 如果物体还没有到达目标位置
        if (direction.magnitude > 0.1f)
        {
            // 移动物体
            transform.Translate(direction.normalized * moveSpeed * Time.deltaTime);
        }
        else
        {
            // 到达目标位置,停止移动
            isMoving = false;
        }
    }
}

挂载脚本:将ClickToMove脚本拖拽到场景中的球体上,使其成为球体的组件。

添加地面:在场景中创建一个平面(Plane)作为地面,确保鼠标点击时可以检测到地面的碰撞。

3、代码解释
  • moveSpeed:公共变量,用于控制物体移动的速度。你可以在Unity的Inspector面板中直接调整这个值。

  • targetPosition:私有变量,用于存储鼠标点击的目标位置。

  • isMoving:布尔变量,用于判断物体是否正在移动。

  • SetTargetPosition():这个方法通过射线检测获取鼠标点击的位置,并设置为目标位置。

  • Move():这个方法用于移动物体到目标位置。使用transform.Translate()方法来实现物体的移动。

  • Physics.Raycast():这是Unity中的一个内置函数,用于检测射线是否击中某个物体。

    通过这个简单的功能,可以轻松实现Unity中物体的鼠标点击移动。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法题笔记(自用)——Python

目录 一. 进制&位运算&ASCAII 二. format格式化输出 1. 基本用法 2. 位置参数 3. 格式化数字 4. 对齐和填充 5. 格式化二进制、八进制、十六进制 6. 格式化百分比 7. 格式化科学计数法 8. 格式化字符串字面量(f-string) 三. 字符串 使…

爬虫系列之【数据解析之JSON】《三》

目录 前置知识 一、 json.loads():JSON 转 Python 数据 二、json.dump():python数据 转 json 并写入文件 三、json.loads() :json 转 python数据 四、json.load() :json 转 python数据(在文件操作中更方便&#xf…

了解Java集合的概念和体系:Collection<T>、Collections与Stream的使用

学习目标 本文知识是对集合层级的介绍,应用开发中实际使用的是他们的子级,感兴趣的小伙伴或者想深入了解有关Java集合知识的朋友可以选择阅读! Stream的方法使用使用部分代码块内大多有两种实现方式,是为了更好的理解方法底层的代…

进程优先级和进程切换 ─── linux第12课

目录 Z(zombie)-僵尸进程 僵尸进程危害 孤儿进程 ​编辑 进程优先级 查看系统进程 用top命令更改已存在进程的nice: 其他概念 进程切换 进程如何切换 进程的调度 进程 内核数据结构 代码和数据 创建进程时 ,先创建内核数据结构 再加载代码和数据 进程退…

光速解决phpstudy无法启动MySQL服务

问题描述 在初步安装使用phpstudy时,会出现mysql服务启动失败的情况,具体表现为点击一键启动后,mysql启动又立即停止 原因及解决方法: phpstudy数据库无法启动有以下几个原因,可以看看自己是第几种: 服务名…

txt 转 json 使用python语言

需求: 把如下的txt文档转成json输出 代码 import jsondef txt_to_json(input_file, output_file):data_list []with open(input_file, r, encodingutf-8) as f:for line in f:# 分割数据并去除换行符parts line.strip().split(,)print(f"{parts}")print(type(par…

Cargo, the Rust package manager, is not installed or is not on PATH.

今天在Windows操作系统上通过pip 安装jupyter的时候遇到这个报错,Cargo, the Rust package manager, is not installed or is not on PATH.。 解决办法 官网:https://rustup.rs/# 下载:https://win.rustup.rs/x86_64 安装完成之后&#xff0c…

JavaWeb个人笔记

技术栈 前端 : HTML CSS JavaScript ES6 Nodejs npm vite vue3 router pinia axios element-plus 后端&#xff1a;HTTP xml Tomcat Servlet Request Response Cookie Sesssion Filter Listener MySQL JDBC Druid Jackson lombok jwt . HTML <!DOCTYPE html> 文档声…

http报文的content-type参数和spring mvc传参问题

很早之前博主聊过HTTP的报文结构以及其中和传参相关的重要参数content-type还有spring mvc&#xff0c;以前的三篇文章&#xff1a; HTTP与HTTPS协议详解&#xff1a;基础与安全机制-CSDN博客 详解Http的Content-Type_content-type application-CSDN博客 如何在Spring Boot中…

14. LangChain项目实战1——基于公司制度RAG回答机器人

教学视频&#xff1a; 12. 基于Gradio搭建基于公司制度RAG_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV11VXRYTErZ/ 环境配置&#xff1a; python版本&#xff1a;3.10.8 服务器&#xff1a;Ubuntu 依赖包requirements.txt文件内容&#xff1a; aiofiles23.2.1 …

FPGA开发,使用Deepseek V3还是R1(6):以滤波器为例

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…

JVM常用概念之垃圾回收设计与停顿

在我们应用程序运行期间&#xff0c;我们是需要尽可能避免垃圾回收。 图1&#xff1a;不同垃圾回收器的设计&#xff08;黄色代表STW&#xff0c;绿色代表并发&#xff09; 实验 计算机配置 Hardware Overview:Model Name: MacBook ProModel Identifier: MacBookPro14,2Pro…

uniapp-原生android插件开发摘要

uni-app在App侧的原生扩展插件&#xff0c;支持使用java、object-c等原生语言编写&#xff0c;从HBuilderX 3.6起&#xff0c;新增支持了使用uts来开发原生插件。 基础项目 UniPlugin-Hello-AS工程请在App离线SDK中查找 基础项目(App离线SDK)已经配置好了自定义插件所需要的…

派可数据BI接入DeepSeek,开启智能数据分析新纪元

派可数据BI产品完成接入DeepSeek&#xff0c;此次接入标志着派可数据BI在智能数据分析领域迈出了重要一步&#xff0c;将为用户带来更智能、更高效、更便捷的数据分析体验。 派可数据BI作为国内领先的商业智能解决方案提供商&#xff0c;一直致力于为用户提供高效、稳定易扩展…

M4 Mac mini运行DeepSeek-R1模型

前言 最近DeepSeek大模型很火&#xff0c;实际工作中也有使用&#xff0c;很多人觉得需要很好的显卡才能跑起来&#xff0c;至少显存需要很高&#xff0c;但实际上一般的核显机器也能跑起来&#xff0c;只不过内存要求要大&#xff0c;对于个人而言&#xff0c;实际上Mac M芯片…

MaxKB上架至阿里云轻量应用服务器镜像市场

近日&#xff0c;MaxKB开源知识库问答系统已上架至阿里云轻量应用服务器镜像市场&#xff0c;目前是阿里云此类镜像市场中唯一推荐的AI应用镜像。 ▲图1 MaxKB已经上架至阿里云轻量应用服务器镜像市场 MaxKB是飞致云旗下开源项目&#xff0c;是一款基于大语言模型和RAG&…

[KEIL]单片机技巧 01

1、查看外设寄存器的值 配合对应的芯片开发手册以查看寄存器及其每一位的意义&#xff0c;可以解决90%以上的单纯的片内外设bug&#xff0c;学会如何通过寄存器的值来排外设上的蛊是嵌入式开发从小白到入门的重要一步&#xff0c;一定要善于使用这个工具&#xff0c;而不是外设…

【网络安全 | 渗透测试】GraphQL精讲二:发现API漏洞

未经许可,不得转载。 推荐阅读:【网络安全 | 渗透测试】GraphQL精讲一:基础知识 文章目录 GraphQL API 漏洞寻找 GraphQL 端点通用查询常见的端点名称请求方法初步测试利用未清理的参数发现模式信息使用 introspection探测 introspection运行完整的 introspection 查询可视化…

MySQL练习

将安装包下载并上传 方法一 步骤 创建组与用户 [rootlocalhost ~]# groupadd mysql [rootlocalhost ~]# useradd -r -g mysql -s /bin/false mysql 解压安装包 [rootlocalhost ~]# tar xf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz -C /usr/local/软连接 [rootlocalh…

【动手实验】TCP半连接队列、全连接队列实战分析

本文是对 从一次线上问题说起&#xff0c;详解 TCP 半连接队列、全连接队列 这篇文章的实验复现和总结&#xff0c;借此加深对 TCP 半连接队列、全连接队列的理解。 实验环境 两台腾讯云服务器 node2&#xff08;172.19.0.12&#xff09; 和 node3&#xff08;172.19.0.15&am…